Розробка авторизації через 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).







