Разработка авторизации через Google Sign-In
Google Sign-In — самый распространённый OAuth-провайдер для мобильных приложений. На Android он работает особенно гладко через Credential Manager API (актуальный подход с Android 14+), на iOS требует отдельного SDK и настройки URL Scheme. Сложность — 1 из 5, но есть несколько типичных граблей, на которые наступают при первой интеграции.
Текущее состояние SDK
На Android устаревший GoogleSignIn SDK (com.google.android.gms:play-services-auth) заменён на Credential Manager с GetGoogleIdOption. Старый API всё ещё работает, но Google рекомендует миграцию. Новый API показывает Bottom Sheet с аккаунтами Google устройства — нативный UI без перехода в браузер.
На iOS — GoogleSignIn-iOS SDK (pod GoogleSignIn, SPM google-signin-ios). Требует добавления GIDClientID в Info.plist и настройки URL Scheme для redirect после авторизации.
Самая частая ошибка при интеграции на iOS: забыли добавить URL Scheme com.googleusercontent.apps.CLIENT_ID в Info.plist. Авторизация открывает браузер, но redirect обратно в приложение не срабатывает.
Реализация на Android
// Credential Manager (Android 14+ / Credential Manager API)
val googleIdOption = GetGoogleIdOption.Builder()
.setFilterByAuthorizedAccounts(false)
.setServerClientId(WEB_CLIENT_ID) // Не Android client ID, а Web client ID
.build()
val request = GetCredentialRequest.Builder()
.addCredentialOption(googleIdOption)
.build()
val result = credentialManager.getCredential(context, request)
val credential = result.credential as? CustomCredential
// Обрабатываем GoogleIdTokenCredential
WEB_CLIENT_ID — это client ID для web приложения в Google Cloud Console, не для Android. Эта путаница — источник ошибки DEVELOPER_ERROR при первом запуске.
Верификация ID Token на сервере
Клиент передаёт idToken на backend. Backend верифицирует через Google tokeninfo endpoint или локально через google-auth-library. ID Token содержит sub (стабильный Google user ID), email, name, picture. sub — первичный ключ для идентификации пользователя, email может меняться.
Сроки: 4-7 рабочих дней. Включает Android Credential Manager + iOS GoogleSignIn SDK, серверную верификацию ID Token, обработку случая когда Google Play Services недоступны (планшеты без GMS).







