Le client de connexion avec One Tap récupère un jeton d'ID Google lorsque l'utilisateur sélectionne un compte Google. Un jeton d'identité est une assertion signée de l'identité d'un utilisateur. Il contient également des informations de profil de base de l'utilisateur, y compris éventuellement une adresse e-mail validée par Google.
Lorsque des jetons d'identité sont disponibles, vous pouvez les utiliser pour vous authentifier de manière sécurisée auprès du backend de votre application ou pour inscrire automatiquement l'utilisateur à un nouveau compte sans avoir à valider son adresse e-mail.
Pour connecter ou inscrire un utilisateur avec un jeton d'ID, envoyez le jeton au backend de votre application. Dans le backend, validez le jeton à l'aide d'une bibliothèque cliente des API Google ou d'une bibliothèque JWT à usage général. Si l'utilisateur ne s'est jamais connecté à votre application avec ce compte Google, créez-en un.
Si vous avez choisi d'utiliser un nonce pour éviter les attaques par relecture, utilisez getNonce pour l'envoyer avec le jeton d'identité à votre serveur de backend et vérifiez la valeur attendue. Nous vous recommandons vivement d'utiliser un nonce pour améliorer la sécurité des utilisateurs.
Obtenir un jeton d'ID à partir de l'objet d'identifiants
Après avoir récupéré les identifiants d'un utilisateur, vérifiez si l'objet d'identifiants inclut un jeton d'ID. Si c'est le cas, envoyez-le à votre 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) { // ... } } } // ... }