2016-12-17 129 views
0

当我点击第一次在谷歌登录时,问我哪一个\ c将被选中,当多于1 a] 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
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),并使用所提供的信息由于在回调中访问将被撤销。 所以你在这里获得信息并做你想做的事情。

此回调添加到您的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帐户每次。

希望这有助于你。

+1

onConnected不会被调用 – andro

+1

signOut应该足够用于本地设备,撤销会导致这种情况发生在不同设备上...... https://developers.google.com/identity/sign-in/android/disconnect –