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