Клиент авторизации One Tap получает токен Google ID, когда пользователь выбирает учетную запись Google. Токен ID — это подписанное подтверждение личности пользователя, которое также содержит основную информацию о его профиле, возможно, включая адрес электронной почты, подтвержденный Google.
Если доступны идентификационные токены, вы можете использовать их для безопасной аутентификации в бэкэнде вашего приложения или для автоматической регистрации пользователя в новой учетной записи без необходимости подтверждения адреса электронной почты пользователя.
Для входа или регистрации пользователя с помощью ID-токена отправьте токен на бэкэнд вашего приложения. На бэкэнде проверьте токен, используя либо клиентскую библиотеку Google API, либо универсальную библиотеку JWT. Если пользователь ранее не входил в ваше приложение с этой учетной записью Google, создайте новую учетную запись.
Если вы выбрали использование одноразового числа (nonce) для предотвращения атак повторного воспроизведения, используйте функцию getNonce , чтобы отправить его вместе с токеном идентификатора на ваш бэкэнд-сервер и проверить ожидаемое значение. Мы настоятельно рекомендуем использовать одноразовое число для повышения безопасности пользователей.
Получите токен идентификации из объекта учетных данных.
После получения учетных данных пользователя проверьте, содержит ли объект учетных данных токен идентификатора. Если да, отправьте его на свой бэкэнд.
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; } } }
Котлин
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) { // ... } } } // ... }