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) { // ... } } } // ... }