无法在谷歌登录Android上选择不同的帐户

时间:2017-02-20 06:44:03

标签: android login social google-login

我已经实施了Google Signing for Android应用。用户可以从Google登录按钮成功登录。

This screen appears while selecting a Social Account : 1

现在,用户已通过选择他/她的帐户成功登录。

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

目前,他没有被要求选择帐户,他会自动使用他/她第一次选择的帐户登录。

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

6 个答案:

答案 0 :(得分:5)

在 android 的 firebase 文档中,他们只提到使用这个:

Firebase.auth.signOut()

但是,下次用户登录时,应用会自动选择之前的电子邮件。为了避免这种情况,您还应该使用以下代码:

googleSignInClient.signOut()

答案 1 :(得分:2)

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

以下是文档描述用户注销应该做的事情: https://developers.google.com/identity/sign-in/android/disconnect

退出:

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

注意:您必须在注销前确认已调用GoogleApiClient.onConnected。

同时检查status中的onResult - 可能会出现一些错误,这可能会导致答案。

答案 2 :(得分:1)

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);
                }
            }
        });

答案 3 :(得分:0)

尝试使用此方法退出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());
    }
}

答案 4 :(得分:0)

在您从Google登录时退出时,请使用以下代码

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

答案 5 :(得分:-1)

当您使用谷歌登录时,它将显示设备中的所有登录谷歌帐户。当您选择任何一个时,它会继续进行,但是当您从系统注销并再次登录时。它直接选择以前的帐户。

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

用于清除应用数据,请按以下步骤操作 1.进入设备设置 2.选择APPs 3.选择你的应用程序 4.存储/清除数据