Google登录始终会询问要选择的帐户

时间:2016-12-17 07:53:31

标签: android google-signin

当我点击第一次在谷歌登录时,它询问我当多于1 a] c时,选择哪个\ c。但第二次没有问,它原先登录以前选择了一个\ c。

我如何能够始终显示\ c选择

    mGoogleApiClient = new GoogleApiClient.Builder(context)
            .enableAutoManage((FragmentActivity) context, new GoogleApiClient.OnConnectionFailedListener() {
                @Override
                public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

                }
            })
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();

我厌倦了mGoogleApiClient.clearDefaultAccountAndReconnect();  但它给我崩溃,因为客户端没有连接

1 个答案:

答案 0 :(得分:1)

You will have to use the revoke access callback.

googleApiClient = new GoogleApiClient.Builder(this)
                    .enableAutoManage(LoginActivity.this , this)
                    .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                    .addApi(AppIndex.API).build();

在登录按钮上单击

 Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
                    startActivityForResult(signInIntent, 100);

OnActivityResult

GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            handleSignInResult(result);

现在你创建一个函数handleSignInResult(result)并使用user提供的信息。因为在回调中,访问将被撤销。 所以,你在这里获得信息并做你想做的事。

将此回调添加到您的googleApiCLient

  googleApiClient.registerConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
            @Override
            public void onConnected(@Nullable Bundle bundle) {
                if (googleApiClient.isConnected()) {
                    Auth.GoogleSignInApi.revokeAccess(googleApiClient).setResultCallback(
                            new ResultCallback<Status>() {
                                @Override
                                public void onResult(@NonNull Status status) {
                                    Log.e("getOut",status.toString());
                                }
                            });
                }
            }
            @Override
            public void onConnectionSuspended(int i) {

            }
        });

此回叫将撤消所有帐户的访问权限,并会显示每次选择gmail帐户的对话框。

希望这会对你有所帮助。