One Tap ile oturum açma istemcisi, kullanıcı bir Google Hesabı seçtiğinde Google kimlik jetonunu alır. Kimlik jetonu, kullanıcının kimliğinin imzalı bir onayının yanı sıra kullanıcının temel profil bilgilerini de içerir. Bu bilgiler arasında, Google tarafından doğrulanmış bir e-posta adresi de olabilir.
Kimlik jetonları kullanılabilir olduğunda, uygulamanızın arka ucuyla güvenli bir şekilde kimlik doğrulamak veya kullanıcının e-posta adresini doğrulamanıza gerek kalmadan yeni bir hesaba otomatik olarak kaydolmak için bu jetonları kullanabilirsiniz.
Bir kullanıcıyı kimlik jetonuyla kaydetmek veya kullanıcının oturum açmasını sağlamak için jetonu uygulamanızın arka ucuna gönderin. Arka uçta, jetonu bir Google API istemci kitaplığı veya genel amaçlı bir JWT kitaplığı kullanarak doğrulayın. Kullanıcı daha önce bu Google Hesabı ile uygulamanızda oturum açmadıysa yeni bir hesap oluşturun.
Yineleme saldırılarını önlemeye yardımcı olması için isteğe bağlı olarak nonce kullanmayı seçtiyseniz getNonce işlevini kullanarak nonce'ı kimlik jetonuyla birlikte arka uç sunucunuza gönderin ve beklenen değeri kontrol edin. Kullanıcı güvenliğini ve emniyetini artırmak için nonce kullanmayı ciddi şekilde düşünmenizi öneririz.
Kimlik bilgileri nesnesinden kimlik jetonu alma
Kullanıcının kimlik bilgilerini aldıktan sonra kimlik bilgileri nesnesinde kimlik jetonunun bulunup bulunmadığını kontrol edin. Bu durumda, arka uçunuza 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) { // ... } } } // ... }