2

HINTERGRUNDGoogle Plus Anmelden Konto Auswahldialog Ausgabe

ich Google Plus OAuth bin mit meiner App zusammen mit Firebase. Wenn der Benutzer die Zeichen in Schaltfläche tippt, und Account-Auswahldialog angezeigt, und der Benutzer wählt die besondere Berücksichtigung der Wahl und Zeichen in.

PROBLEM

Angenommen, der Benutzer zwei Konten hat in diesem Gerät, A und B. Zunächst wählt er Konto A aus, um sich anzumelden, und nutzt dann die App und entscheidet sich dann, sich abzumelden. Jetzt klickt er auf die Schaltfläche Anmelden wieder, aber das Konto Auswahldialog nicht erscheint und automatisch Zeichen bei der Verwendung der zuvor ausgewählten Konto A.

WAS ICH WILL

ich den Benutzer möchte Mit dem Konto Auswahldialog jedes Mal präsentiert werden und geben sie eine Chance, ein anderes Konto zu wählen, wenn sie wollen.

CODE

Hier ist ein kleiner Code-Schnipsel, wie ich in das Google-API-Client für die Anmeldung verwenden.

String mClientId = parcel.getProviderExtra().getString(CLIENT_ID_KEY); 
     GoogleSignInOptions googleSignInOptions; 

     googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
       .requestIdToken(mClientId) 
       .requestEmail() 
       .build(); 

     mGoogleApiClient = new GoogleApiClient.Builder(activity) 
       .addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions) 
       .build(); 

     mGoogleApiClient.connect(); 

und abzumelden,

Auth.GoogleSignInApi.signOut(mGoogleApiClient); 

Jede Hilfe wird sehr geschätzt. Dies erzwingt den Dialog jedes Mal erscheinen

+0

Sie können den Benutzer abmelden, bevor mGoogleApiClient.connect(); mit App. Bedingungen –

+0

Die Abmeldung API hilft nicht. Der Dialog wird nicht angezeigt, wenn sich der Benutzer abmeldet. Die einzige Möglichkeit besteht darin, Daten zu löschen, die bestimmte Einstellungen löschen, und dann wird der Dialog erneut angezeigt. –

Antwort

1

habe dies in.

@Override 
    public void startLogin(Activity activity, String mEmail) { 
     Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
     /** 
     * Clearing default account every time so that the account picker dialog can be enforced 
     */ 
     if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) { 
      mGoogleApiClient.clearDefaultAccountAndReconnect(); 
     } 
     activity.startActivityForResult(signInIntent, RC_SIGN_IN); 
    } 

durch das Löschen des Standardkonto jedes Mal, bevor Zeichen aufgelöst.

0

Löschen Sie einfach das Standardkonto jedes Mal, wenn sich der Benutzer anmeldet, indem Sie die unten stehende Methode verwenden.

private void signIn() { 
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 

    if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) { 

     mGoogleApiClient.clearDefaultAccountAndReconnect(); 
    } 
    startActivityForResult(signInIntent, RC_SIGN_IN); 
} 
Verwandte Themen