Android Google Plus登录帐户选择对话框问题
背景 我在我的应用程序中与Firebase一起使用Google Plus OAuth。当用户点击“登录”按钮,出现“帐户选择”对话框,用户选择所选的特定帐户并登录时 问题 假设用户在该设备中有两个帐户A和B。最初,他选择帐户A登录,然后使用应用程序,然后决定注销。现在,他再次单击登录按钮,但帐户选择对话框不会出现,它会使用以前选择的帐户A自动登录 我想要什么 我希望用户每次都能看到“帐户选择”对话框,并让他们有机会选择不同的帐户 代码 下面是我如何使用GoogleAPI客户端进行登录的一个小代码片段Android Google Plus登录帐户选择对话框问题,android,google-plus,firebase-authentication,google-signin,Android,Google Plus,Firebase Authentication,Google Signin,背景 我在我的应用程序中与Firebase一起使用Google Plus OAuth。当用户点击“登录”按钮,出现“帐户选择”对话框,用户选择所选的特定帐户并登录时 问题 假设用户在该设备中有两个帐户A和B。最初,他选择帐户A登录,然后使用应用程序,然后决定注销。现在,他再次单击登录按钮,但帐户选择对话框不会出现,它会使用以前选择的帐户A自动登录 我想要什么 我希望用户每次都能看到“帐户选择”对话框,并让他们有机会选择不同的帐户 代码 下面是我如何使用GoogleAPI客户端进行登录的一个小代码
String mClientId = parcel.getProviderExtra().getString(CLIENT_ID_KEY);
GoogleSignInOptions googleSignInOptions;
googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(mClientId)
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(activity)
.addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
.build();
mGoogleApiClient.connect();
然后退出
Auth.GoogleSignInApi.signOut(mGoogleApiClient);
任何帮助都将不胜感激。在每次登录前清除默认帐户,从而解决了此问题
@Override
public void startLogin(Activity activity, String mEmail) {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
/**
* Clearing default account every time so that the account picker dialog can be enforced
*/
if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
mGoogleApiClient.clearDefaultAccountAndReconnect();
}
activity.startActivityForResult(signInIntent, RC_SIGN_IN);
}
这将强制对话框每次出现。只要使用下面的方法在用户每次登录时清除默认帐户即可
private void signIn() {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
mGoogleApiClient.clearDefaultAccountAndReconnect();
}
startActivityForResult(signInIntent, RC_SIGN_IN);
}
private void revokeAccess(){
googleSignInClient.revokeAccess()的
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
// ...
Log.d(LOGTAG,“///revokeAccess()//”;
}
});
}
您可以在mGoogleApiClient.connect()之前注销用户;使用应用程序。条件注销API没有帮助。该对话框在用户注销时不显示。唯一的方法是清除数据,清除它存储的一些首选项,然后对话框再次出现。这似乎并没有回答问题
private void revokeAccess() {
googleSignInClient.revokeAccess()
.addOnCompleteListener(this, new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
// ...
Log.d(LOGTAG, " /// revokeAccess() /// ");
}
});
}