Mit einem Back-End mithilfe von ID-Tokens authentifizieren

Der One Tap-Anmeldeclient ruft ein Google-ID-Token ab, wenn der Nutzer ein Google-Konto auswählt. Ein ID-Token ist eine signierte Assertion der Identität eines Nutzers, die auch die grundlegenden Profilinformationen des 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 Backend Ihrer App. Prüfen Sie das Token im Backend entweder mit einer Google API-Clientbibliothek oder einer allgemeinen JWT-Bibliothek. Wenn sich der Nutzer mit diesem Google-Konto noch nicht in Ihrer App angemeldet hat, erstellen Sie ein neues Konto.

Wenn du optional einen Nonce verwendet hast, um Replay-Angriffe zu vermeiden, sende ihn mit dem ID-Token an deinen Backend-Server und überprüfe den erwarteten Wert. Verwende dazu die Funktion getNonce. Wir empfehlen Ihnen dringend, einen Nonce zu verwenden, um die Sicherheit der Nutzer zu verbessern.

ID-Token aus dem Anmeldedatenobjekt abrufen

Prüfe nach dem Abrufen der Anmeldedaten eines Nutzers, ob das Anmeldedatenobjekt ein ID-Token enthält. Wenn ja, sende sie an dein 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) {
                    // ...
            }
        }
    }
    // ...
}