Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Integrieren von Google Sign-In in Ihre Android App

Um Google Sign-In in Ihre Android-App zu integrieren, konfigurieren Sie Google Sign-In und fügen Sie dem Layout Ihrer App eine Schaltfläche hinzu, mit der der Anmeldefluss gestartet wird.

Bevor Sie beginnen

Konfigurieren Sie ein Google API Console-Projekt und richten Sie Ihr Android Studio-Projekt ein .

Konfigurieren Sie die Google-Anmeldung und das GoogleSignInClient-Objekt

  1. Konfigurieren Sie in der onCreate Methode Ihrer onCreate Google Sign-In, um die für Ihre App erforderlichen Benutzerdaten anzufordern. Um beispielsweise die Google- GoogleSignInOptions zu konfigurieren, dass die Benutzer-ID und grundlegende Profilinformationen GoogleSignInOptions , erstellen Sie ein GoogleSignInOptions Objekt mit dem Parameter DEFAULT_SIGN_IN . Um auch die E-Mail-Adressen der Benutzer anzufordern, erstellen Sie das GoogleSignInOptions Objekt mit der Option requestEmail .

    // Configure sign-in to request the user's ID, email address, and basic
    // profile. ID and basic profile are included in DEFAULT_SIGN_IN.
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();

    Wenn Sie zusätzliche Bereiche anfordern müssen, um auf Google APIs zuzugreifen, geben Sie diese mit requestScopes . Um die bestmögliche Benutzererfahrung zu erzielen, fordern Sie bei der Anmeldung nur die Bereiche an, die für eine minimale Funktion Ihrer App erforderlich sind. Fordern Sie zusätzliche Bereiche nur dann an, wenn Sie sie benötigen, damit Ihre Benutzer den Zustimmungsbildschirm im Kontext einer von ihnen ausgeführten Aktion sehen. Siehe Anfordern zusätzlicher Bereiche .

  2. Erstellen GoogleSignInClient dann auch in der onCreate Methode Ihrer onCreate ein GoogleSignInClient Objekt mit den von Ihnen angegebenen Optionen.

    // Build a GoogleSignInClient with the options specified by gso.
    mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

Suchen Sie nach einem vorhandenen angemeldeten Benutzer

Überprüfen Sie in der onStart Methode Ihrer Aktivität, ob sich ein Nutzer bereits bei Ihrer App bei Google angemeldet hat.

// Check for existing Google Sign In account, if the user is already signed in
// the GoogleSignInAccount will be non-null.
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
updateUI(account);

Wenn GoogleSignIn.getLastSignedInAccount ein GoogleSignInAccount Objekt GoogleSignInAccount (anstatt null ), hat sich der Nutzer bereits bei Ihrer App bei Google angemeldet. Aktualisieren Sie Ihre Benutzeroberfläche entsprechend, dh verbergen Sie die Anmeldeschaltfläche, starten Sie Ihre Hauptaktivität oder was auch immer für Ihre App geeignet ist.

Wenn GoogleSignIn.getLastSignedInAccount null zurückgibt, hat sich der Nutzer noch nicht bei Ihrer App bei Google angemeldet. Aktualisieren Sie Ihre Benutzeroberfläche, um die Google-Anmeldeschaltfläche anzuzeigen.

Fügen Sie Ihrer App die Google-Anmeldeschaltfläche hinzu

  1. Die standardmäßige Google-Anmeldeschaltfläche Fügen Sie den SignInButton in das Layout Ihrer Anwendung ein:

    <com.google.android.gms.common.SignInButton
     android:id="@+id/sign_in_button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
    
  2. Optional : Wenn Sie die Standardgrafik für setSize verwenden, anstatt Ihre eigenen setSize , können Sie die Größe der Schaltfläche mit der setSize Methode setSize .

    // Set the dimensions of the sign-in button.
    SignInButton signInButton = findViewById(R.id.sign_in_button);
    signInButton.setSize(SignInButton.SIZE_STANDARD);
    
  3. Registrieren Sie in der Android-Aktivität (z. B. in der onCreate Methode) den onCreate Ihrer Schaltfläche, um den Benutzer beim OnClickListener :

    findViewById(R.id.sign_in_button).setOnClickListener(this);
    

Starten Sie den Anmeldefluss

  1. Bild der Auswahl des Anmeldekontos onClick der onClick Methode der Aktivität das onClick auf onClick , indem Sie mit der Methode getSignInIntent und die Absicht mit startActivityForResult .

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.sign_in_button:
                signIn();
                break;
            // ...
        }
    }
    
    private void signIn() {
        Intent signInIntent = mGoogleSignInClient.getSignInIntent();
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }

    Wenn Sie die Absicht starten, wird der Nutzer aufgefordert, ein Google-Konto auszuwählen, mit dem er sich anmelden möchte. Wenn Sie Bereiche angefordert haben, die über profile , email und openid , wird der Benutzer auch aufgefordert, Zugriff auf die angeforderten Ressourcen zu gewähren.

  2. Nachdem sich der Benutzer GoogleSignInAccount , können Sie in der onActivityResult Methode der Aktivität ein GoogleSignInAccount Objekt für den Benutzer onActivityResult .

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    
        // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
        if (requestCode == RC_SIGN_IN) {
            // The Task returned from this call is always completed, no need to attach
            // a listener.
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
            handleSignInResult(task);
        }
    }

    Das GoogleSignInAccount Objekt enthält Informationen zum angemeldeten Benutzer, z. B. den Namen des Benutzers.

    private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
        try {
            GoogleSignInAccount account = completedTask.getResult(ApiException.class);
    
            // Signed in successfully, show authenticated UI.
            updateUI(account);
        } catch (ApiException e) {
            // The ApiException status code indicates the detailed failure reason.
            // Please refer to the GoogleSignInStatusCodes class reference for more information.
            Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
            updateUI(null);
        }
    }

    Sie können die E-Mail-Adresse des Benutzers auch mit getEmail , die Google-ID des Benutzers (für die clientseitige Verwendung) mit getId und ein ID-Token für den Benutzer mit getIdToken . Wenn Sie den aktuell angemeldeten Benutzer an einen Backend-Server übergeben müssen, senden Sie das ID-Token an Ihren Backend-Server und validieren Sie das Token auf dem Server.