我使用 AccountManager 获取身份验证令牌,如下所示
public void loginUser(Account userAccount) {
AccountManager accountManager = AccountManager.get(this);
accountManager.getAuthToken(userAccount, AUTH_SCOPE, null, this,
new OnAuthTokenAcquired(), null);
this.currentFragment.onUserAccountSelected(userAccount);
}
private class OnAuthTokenAcquired implements AccountManagerCallback<Bundle> {
@Override
public void run(AccountManagerFuture<Bundle> result) {
try {
Bundle bundle = result.getResult();
String accountName = bundle.getString(AccountManager.KEY_ACCOUNT_NAME);
String authToken = bundle.getString(AccountManager.KEY_AUTHTOKEN);
showProgressDialog(null, getResources().getString(R.string.logging_in_user_msg));
getHouseholdMemberManager().loginUser(accountName, authToken, User.AuthType.AUTH_TOKEN, "google-oauth2",
MainActivity.this);
} catch (OperationCanceledException e) {
} catch (AuthenticatorException e) {
onGoogleSignInError(e.getMessage());
} catch (Exception e) {
onGoogleSignInError(e.getMessage());
}
}
}
当用户点击google登录按钮时,会打开一个帐户选择器对话框/未显示/。选择帐户 loginUser()后,系统会向用户显示Google grant app权限弹出对话框,并提示授予应用程序查看基本个人资料信息的权限。 问题是当用户单击“确定”按钮时,未调用 OnAuthTokenAcquired.run()。他必须再次点击登录按钮才能获得我觉得非常不方便的身份验证令牌。
当用户点击确定按钮关闭应用权限弹出对话框时,您能否协助找到如何将控制传递给 OnAuthTokenAcquired.run()的方法?