无法在Google登录中选择其他帐户



我已经实现了Android应用的Google签名。用户可以从Google登录按钮中成功登录。

选择一个社交帐户时出现此屏幕:屏幕截图

所以现在用户通过选择其帐户成功登录了。

现在,用户注销,并尝试通过使用Google登录按钮再次登录。

目前,他没有选择选择帐户的选项,他会自动使用他/她第一次选择的帐户记录。

在注销时,我该怎么办才能清除选定帐户的缓存。

在android的firebase文档中,他们仅参考以下内容:

Firebase.auth.signOut()

但是,下次用户登录时,该应用将自动选择上一个电子邮件。为了避免这种情况,您也应该使用以下代码:

googleSignInClient.signOut()

由于您没有提供任何代码或参考您的登录方式和登录方式,因此您可能会错误地从应用中签署用户。

因此,这是文档描述的一个人在用户注销时应做的:https://developers.google.com/Indentity/sign-in/android/disconnect

签字:

Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
            new ResultCallback<Status>() {
                @Override
                public void onResult(Status status) {
                    // ...
                }
            });

注意:您必须确认GoogleapicLient.onnected已被调用。

还检查onResult中的status-也许有一些错误,可能会导致答案。

GoogleSignInOptions gso = new GoogleSignInOptions.
                Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).
                build();
        GoogleSignInClient googleSignInClient= GoogleSignIn.getClient(this,gso);
        googleSignInClient.signOut().addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()){
                    FirebaseAuth.getInstance().signOut(); // very important if you are using firebase.
                    Intent login_intent = new Intent(getApplicationContext(),YouLoginActivity.class);
                    login_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK); // clear previous task (optional)
                    startActivity(login_intent);
                }
            }
        });

尝试使用此方法从Google签名中注销:

在成功登录onConnected(Bundle arg0)

之后,请确保您打电话给它。
 public void Disconnect_google() {
    try {
        if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
                    mGoogleApiClient.clearDefaultAccountAndReconnect().setResultCallback(new ResultCallback<Status>() {
                        @Override
                        public void onResult(Status status) {
                            mGoogleApiClient.disconnect();
                            Toast.makeText(getApplicationContext(),"Disconnected",Toast.LENGTH_SHORT).show();
                        }
                    });
                }  
    } catch (Exception e) {
        Log.d("DISCONNECT ERROR", e.toString());
    }
}

在注销时从Google登录时,然后使用以下代码

if (mGoogleApiClient.isConnected()) {
                             Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
                            mGoogleApiClient.disconnect();
                            mGoogleApiClient.connect();
                        }

您的问题将通过仅使用单行进行签名而不是8行代码来解决您的问题,您可以在签名用户

时可以在标志性中使用
private fun signIn() {
    googleSignInClient.signOut()
    val signInIntent = googleSignInClient.signInIntent
    startActivityForResult(signInIntent, RC_SIGN_IN)
}

,在登录功能中,您可以使用此

FirebaseAuth.getInstance().signOut()

firebaseauth在哪里:com.google.firebase.auth公共抽象类Firebaseauth

使用Google登录时,它将显示设备中的所有符号Google帐户。当您选择任何一个都比进一步进行时,但是当您从系统中注销并再次登录时。它直接选择了先前的帐户。

因此,要从设备中的所有现有帐户中选择您必须清除应用程序数据。

清除应用程序数据以下步骤1.转到设备设置2.选择应用程序3.选择您的应用4.存储/清除数据

最新更新