2016-12-17 2 views
0

Wenn ich klicke 1. Mal auf Google Anmelden, frage mich, welche a \ c ausgewählt werden, wenn mehr als 1 a] c vorhanden. aber das zweite Mal fragt es nicht, es atomar login mit vorherigen ausgewählten a \ c.Google Anmelden immer fragen, welche Konten zu wählen

, wie ich immer eine \ c zeigen ausgewählte

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

i müde mGoogleApiClient.clearDefaultAccountAndReconnect(); aber sein mir gegeben Absturz als Client nicht

Antwort

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

Auf dem Schild in Schaltfläche klicken

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

In onActivityResult

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

Jetzt haben Sie die Funktion handleSignInResult(result) und verwenden Sie die Informationen zur Verfügung gestellt zu machen verbunden durch user.Weil im Callback der Zugriff gesperrt wird. SO hier erhalten Sie die Informationen und tun, was Sie tun möchten.

diesen Rückruf zu Ihrem googleApiCLient hinzufügen

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) { 

      } 
     }); 

Dieser Anruf wird widerrufen wieder Zugang von allen Konten und wird den Dialog zeigen die Google Mail-Konto jedes Mal zu wählen.

Hoffe das hilft dir.

+1

onConnected heißt nicht – andro

+1

signOut sollte für lokales Gerät ausreichen, revoke wird dazu führen, dass dies auf Geräten geschieht ... https://developers.google.com/identity/sign-in/android/disconnect –

Verwandte Themen