Mit einem Back-End mithilfe von ID-Tokens authentifizieren

Der Client für die Anmeldung über One Tap ruft ein Google-ID-Token ab, wenn der Nutzer ein Google-Konto auswählt. Ein ID-Token ist eine signierte Bestätigung der Identität eines Nutzers, die auch die grundlegenden Profilinformationen eines Nutzers enthält, möglicherweise einschließlich einer von Google bestätigten E-Mail-Adresse.

Wenn ID-Tokens verfügbar sind, können Sie sie verwenden, um sich sicher beim Backend Ihrer App zu authentifizieren oder den Nutzer automatisch für ein neues Konto zu registrieren, ohne dass die E-Mail-Adresse des Nutzers bestätigt werden muss.

Wenn Sie einen Nutzer mit einem ID-Token anmelden oder registrieren möchten, senden Sie das Token an das Back-End Ihrer App. Überprüfen Sie das Token im Backend entweder mit einer Google API-Clientbibliothek oder einer JWT-Bibliothek für allgemeine Zwecke. Wenn sich der Nutzer noch nicht mit diesem Google-Konto in deiner App angemeldet hat, erstelle ein neues Konto.

Wenn Sie optional eine Nonce verwenden, um Replay-Angriffe zu vermeiden, senden Sie sie mit getNonce zusammen mit dem ID-Token an Ihren Backend-Server und prüfen Sie, ob der erwartete Wert vorhanden ist. Wir empfehlen dringend, eine Nonce zu verwenden, um die Sicherheit der Nutzer zu verbessern.

ID-Token aus dem Anmeldedatenobjekt abrufen

Nachdem Sie die Anmeldedaten eines Nutzers abgerufen haben, prüfen Sie, ob das Anmeldedatenobjekt ein ID-Token enthält. Wenn ja, senden Sie es an Ihr Backend.

Java

public class YourActivity extends AppCompatActivity {

    // ...
    private static final int REQ_ONE_TAP = 2;  // Can be any integer unique to the Activity.
    private boolean showOneTapUI = true;
    // ...

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        switch (requestCode) {
            case REQ_ONE_TAP:
                try { 
                    SignInCredential credential = oneTapClient.getSignInCredentialFromIntent(data);
                    String idToken = credential.getGoogleIdToken();
                    if (idToken !=  null) {
                        // Got an ID token from Google. Use it to authenticate
                        // with your backend.
                        Log.d(TAG, "Got ID token.");
                    }
                } catch (ApiException e) {
                    // ...
                }
                break;
        }
    }
}

Kotlin

class YourActivity : AppCompatActivity() {

      // ...
      private val REQ_ONE_TAP = 2  // Can be any integer unique to the Activity
      private var showOneTapUI = true
      // ...

      override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
          super.onActivityResult(requestCode, resultCode, data)

          when (requestCode) {
               REQ_ONE_TAP -> {
                  try { 
                      val credential = oneTapClient.getSignInCredentialFromIntent(data)
                      val idToken = credential.googleIdToken
                      when {
                          idToken != null -> {
                              // Got an ID token from Google. Use it to authenticate
                              // with your backend.
                              Log.d(TAG, "Got ID token.")
                          }
                          else -> {
                              // Shouldn't happen.
                              Log.d(TAG, "No ID token!")
                          }
                      }
                  } catch (e: ApiException) {
                      // ...
              }
          }
      }
      // ...
  }