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ıdır. Ayrıca kullanıcının temel profil bilgilerini de içerir. Bu bilgiler arasında Google tarafından doğrulanmış bir e-posta adresi de bulunabilir.
Kimlik jetonları mevcut olduğunda, uygulamanızın arka ucuyla güvenli bir şekilde kimlik doğrulaması yapmak veya kullanıcının e-posta adresini doğrulamaya gerek kalmadan kullanıcıyı otomatik olarak yeni bir hesaba kaydetmek için bu jetonları kullanabilirsiniz.
Bir kullanıcının kimlik jetonuyla oturum açmasını veya kaydolmasını sağlamak 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ı daha önce bu Google Hesabı ile uygulamanızda oturum açmadıysa yeni bir hesap oluşturun.
Tekrar saldırılarını önlemeye yardımcı olmak için isteğe bağlı olarak tek seferlik rastgele sayı kullanmayı seçtiyseniz bunu kimlik jetonuyla birlikte arka uç sunucunuza göndermek için getNonce yöntemini kullanın ve beklenen değeri kontrol edin. Kullanıcı güvenliğini artırmak için tek seferlik rastgele sayı kullanmanızı önemle tavsiye ederiz.
Kimlik bilgileri nesnesinden kimlik jetonu alma
Kullanıcının kimlik bilgilerini aldıktan sonra kimlik bilgileri nesnesinin bir kimlik jetonu içerip içermediğini kontrol edin. Varsa arka ucunuza 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) {
// ...
}
}
}
// ...
}