Kullanıcı bir Google Hesabı seçtiğinde One Tap ile oturum açma istemcisi bir Google kimlik jetonu alır. Kimlik jetonu, kullanıcının kimliğine dair imzalı bir beyan olup kullanıcının temel profil bilgilerini de içerir (Google tarafından doğrulanmış bir e-posta adresi de dahil olabilir).
Kimlik jetonları kullanılabilir olduğunda bunları, uygulamanızın arka ucuyla güvenli bir şekilde kimlik doğrulamak veya kullanıcının e-posta adresini doğrulamaya gerek kalmadan kullanıcıyı yeni bir hesaba otomatik olarak kaydetmek için kullanabilirsiniz.
Bir kullanıcının kimlik jetonuyla oturum açması veya kaydolması için jetonu uygulamanızın arka ucuna gönderin. Arka uçta, Google API istemci kitaplığı veya genel amaçlı bir JWT kitaplığı kullanarak jetonu doğrulayın. Kullanıcı, uygulamanızda daha önce bu Google Hesabı ile oturum açmadıysa yeni bir hesap oluşturun.
İsteğe bağlı olarak yeniden oynatma saldırılarını önlemek için tek seferlik bir değer kullanmayı seçtiyseniz kimlik jetonuyla birlikte arka uç sunucunuza göndermek için getNonce işlevini kullanın ve beklenen değeri kontrol edin. Kullanıcı güvenliğini artırmak için tek seferlik bir sayı kullanmanızı önemle tavsiye ederiz.
Kimlik bilgisi nesnesinden kimlik jetonu alma
Bir kullanıcının kimlik bilgilerini aldıktan sonra, kimlik bilgileri nesnesinin kimlik jetonu içerip içermediğini kontrol edin. Bu durumda, arka uç sunucunuza gönderin.
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) { // ... } } } // ... }