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