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 Assertion 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 bei Ihrem App-Backend 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 mit einer JWT-Bibliothek für allgemeine Zwecke. Wenn sich der Nutzer noch nicht mit diesem Google-Konto in Ihrer App angemeldet hat, erstellen Sie ein neues Konto.
Wenn Sie optional eine Nonce verwenden möchten, um Replay-Angriffe zu vermeiden, verwenden Sie getNonce, um sie zusammen mit dem ID-Token an Ihren Backend-Server zu senden und den erwarteten Wert zu prüfen. Wir empfehlen Ihnen dringend, einen 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 sie 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) { // ... } } } // ... }