正在查看: xDrip+ v04633772025.07.16 应用的 AuthorizationManagementActivity.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: xDrip+ v04633772025.07.16 应用的 AuthorizationManagementActivity.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package net.openid.appauth;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import net.openid.appauth.AuthorizationException;
import net.openid.appauth.internal.Logger;
import org.json.JSONException;
public class AuthorizationManagementActivity extends Activity {
private Intent mAuthIntent;
private AuthorizationManagementRequest mAuthRequest;
private boolean mAuthorizationStarted = false;
private PendingIntent mCancelIntent;
private PendingIntent mCompleteIntent;
public static Intent createStartIntent(Context context, AuthorizationManagementRequest request, Intent authIntent, PendingIntent completeIntent, PendingIntent cancelIntent) {
Intent createBaseIntent = createBaseIntent(context);
createBaseIntent.putExtra("authIntent", authIntent);
createBaseIntent.putExtra("authRequest", request.jsonSerializeString());
createBaseIntent.putExtra("authRequestType", AuthorizationManagementUtil.requestTypeFor(request));
createBaseIntent.putExtra("completeIntent", completeIntent);
createBaseIntent.putExtra("cancelIntent", cancelIntent);
return createBaseIntent;
}
public static Intent createResponseHandlingIntent(Context context, Uri responseUri) {
Intent createBaseIntent = createBaseIntent(context);
createBaseIntent.setData(responseUri);
createBaseIntent.addFlags(603979776);
return createBaseIntent;
}
private static Intent createBaseIntent(Context context) {
return new Intent(context, (Class<?>) AuthorizationManagementActivity.class);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
extractState(getIntent().getExtras());
} else {
extractState(savedInstanceState);
}
}
@Override
protected void onResume() {
super.onResume();
if (!this.mAuthorizationStarted) {
try {
startActivity(this.mAuthIntent);
this.mAuthorizationStarted = true;
return;
} catch (ActivityNotFoundException unused) {
handleBrowserNotFound();
finish();
return;
}
}
if (getIntent().getData() != null) {
handleAuthorizationComplete();
} else {
handleAuthorizationCanceled();
}
finish();
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean("authStarted", this.mAuthorizationStarted);
outState.putParcelable("authIntent", this.mAuthIntent);
outState.putString("authRequest", this.mAuthRequest.jsonSerializeString());
outState.putString("authRequestType", AuthorizationManagementUtil.requestTypeFor(this.mAuthRequest));
outState.putParcelable("completeIntent", this.mCompleteIntent);
outState.putParcelable("cancelIntent", this.mCancelIntent);
}
private void handleAuthorizationComplete() {
Uri data = getIntent().getData();
Intent extractResponseData = extractResponseData(data);
if (extractResponseData == null) {
Logger.error("Failed to extract OAuth2 response from redirect", new Object[0]);
} else {
extractResponseData.setData(data);
sendResult(this.mCompleteIntent, extractResponseData, -1);
}
}
private void handleAuthorizationCanceled() {
Logger.debug("Authorization flow canceled by user", new Object[0]);
sendResult(this.mCancelIntent, AuthorizationException.fromTemplate(AuthorizationException.GeneralErrors.USER_CANCELED_AUTH_FLOW, null).toIntent(), 0);
}
private void handleBrowserNotFound() {
Logger.debug("Authorization flow canceled due to missing browser", new Object[0]);
sendResult(this.mCancelIntent, AuthorizationException.fromTemplate(AuthorizationException.GeneralErrors.PROGRAM_CANCELED_AUTH_FLOW, null).toIntent(), 0);
}
private void extractState(Bundle state) {
if (state == null) {
Logger.warn("No stored state - unable to handle response", new Object[0]);
finish();
return;
}
this.mAuthIntent = (Intent) state.getParcelable("authIntent");
this.mAuthorizationStarted = state.getBoolean("authStarted", false);
this.mCompleteIntent = (PendingIntent) state.getParcelable("completeIntent");
this.mCancelIntent = (PendingIntent) state.getParcelable("cancelIntent");
try {
String string = state.getString("authRequest", null);
this.mAuthRequest = string != null ? AuthorizationManagementUtil.requestFrom(string, state.getString("authRequestType", null)) : null;
} catch (JSONException unused) {
sendResult(this.mCancelIntent, AuthorizationException.AuthorizationRequestErrors.INVALID_REQUEST.toIntent(), 0);
}
}
private void sendResult(PendingIntent callback, Intent cancelData, int resultCode) {
if (callback != null) {
try {
callback.send(this, 0, cancelData);
return;
} catch (PendingIntent.CanceledException e) {
Logger.error("Failed to send cancel intent", e);
return;
}
}
setResult(resultCode, cancelData);
}
private Intent extractResponseData(Uri responseUri) {
if (responseUri.getQueryParameterNames().contains("error")) {
return AuthorizationException.fromOAuthRedirect(responseUri).toIntent();
}
AuthorizationManagementResponse responseWith = AuthorizationManagementUtil.responseWith(this.mAuthRequest, responseUri);
if ((this.mAuthRequest.getState() == null && responseWith.getState() != null) || (this.mAuthRequest.getState() != null && !this.mAuthRequest.getState().equals(responseWith.getState()))) {
Logger.warn("State returned in authorization response (%s) does not match state from request (%s) - discarding response", responseWith.getState(), this.mAuthRequest.getState());
return AuthorizationException.AuthorizationRequestErrors.STATE_MISMATCH.toIntent();
}
return responseWith.toIntent();
}
}