We are discontinuing the Google Sign-In JavaScript Platform Library for web. The library will be unavailable for download after the March 31, 2023 deprecation date. Instead, use the new Google Identity Services for Web.
By default, newly created Client IDs are now blocked from using the older Platform Library, existing Client IDs are unaffected. New Client IDs created before July 29th, 2022 can set `plugin_name` to enable use of the Google Platform Library.

Google Log-in in Ihre Android-App integrieren

Wenn du Google Log-in in deine Android-App integrieren möchtest, konfiguriere Google Log-in und füge dem Layout deiner App eine Schaltfläche hinzu, mit der der Anmeldevorgang gestartet wird.

Hinweis

Google API Console-Projekt konfigurieren und Android Studio-Projekt einrichten

Google Log-in und das GoogleSignInClient-Objekt konfigurieren

  1. Konfigurieren Sie Google Log-in in Ihrer onCreate-Methode für Anmeldungen so, dass die von Ihrer App erforderlichen Nutzerdaten angefordert werden. Wenn Sie beispielsweise Google Log-in für die Anforderung von Nutzern und ID und grundlegende Profilinformationen konfigurieren möchten, erstellen Sie ein GoogleSignInOptions-Objekt mit dem Parameter DEFAULT_SIGN_IN. Wenn Sie auch E-Mail-Adressen von Nutzern anfragen möchten, erstellen Sie das Objekt GoogleSignInOptions 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 für den Zugriff auf Google APIs anfordern möchten, geben Sie sie mit requestScopes an. Für eine optimale Nutzererfahrung sollten Sie bei der Anmeldung nur die Bereiche anfordern, die für die minimale Funktionsweise Ihrer Anwendung erforderlich sind. Fordern Sie zusätzliche Bereiche nur bei Bedarf an, damit Ihre Nutzer den Zustimmungsbildschirm im Zusammenhang mit einer von ihnen ausgeführten Aktion sehen. Weitere Informationen finden Sie unter Zusätzliche Bereiche anfordern.

  2. Erstellen Sie dann in der Anmeldemethode onCreate ein Objekt GoogleSignInClient mit den von Ihnen angegebenen Optionen.

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

Nach einem angemeldeten Nutzer suchen

Prüfe in der onStart-Methode deiner Aktivität, ob sich ein Nutzer bereits bei Google bei deiner App 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 zurückgibt (anstatt null), hat sich der Nutzer bereits mit Google bei deiner App angemeldet. Aktualisieren Sie Ihre UI entsprechend. Blenden Sie dazu die Anmeldeschaltfläche aus, starten Sie die Hauptaktivität oder verwenden Sie eine andere geeignete App.

Wenn GoogleSignIn.getLastSignedInAccount null zurückgibt, hat sich der Nutzer noch nicht bei Google bei Ihrer App angemeldet. Aktualisieren Sie Ihre UI, damit die Schaltfläche „Google Log-in“ angezeigt wird.

Google Log-in-Schaltfläche in der App hinzufügen

  1. Die standardmäßige Anmeldeschaltfläche von Google Füge SignInButton im Layout deiner App hinzu:

    <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 Anmeldeschaltflächen verwenden, anstatt eigene Assets für die Anmeldeschaltfläche bereitzustellen, können Sie die Größe der Schaltfläche mit der Methode setSize anpassen.

    // 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, das OnClickListener Ihrer Schaltfläche, um sich beim Klicken des Nutzers anzumelden:

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

Anmeldevorgang starten

  1. Bild der Kontoauswahl für die Anmeldung Gehe bei der onClick-Methode der Aktivität auf die Schaltfläche zum Anmelden, indem du einen Anmelde-Intent mit der Methode getSignInIntent erstellst und den Intent mit startActivityForResult beginnst.

    @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 der Intent gestartet wird, muss der Nutzer ein Google-Konto für die Anmeldung auswählen. Wenn Sie Bereiche angefordert haben, die über profile, email und openid hinausgehen, wird der Nutzer auch aufgefordert, Zugriff auf die angeforderten Ressourcen zu gewähren.

  2. Nachdem sich der Nutzer angemeldet hat, kannst du ein GoogleSignInAccount-Objekt für den Nutzer in der onActivityResult-Methode der Aktivität abrufen.

    @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 Objekt GoogleSignInAccount enthält Informationen zum angemeldeten Nutzer, z. B. den Namen des Nutzers.

    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 auch die E-Mail-Adresse des Nutzers mit getEmail, die Google-ID des Nutzers (zur clientseitigen Verwendung) mit getId und ein ID-Token für den Nutzer mit getIdToken abrufen. Wenn Sie den aktuell angemeldeten Nutzer an einen Back-End-Server übergeben möchten, senden Sie das ID-Token an den Back-End-Server und validieren Sie das Token auf dem Server.