Розробка авторизації через Google Sign-In
Google Sign-In — найпоширеніший OAuth-провайдер для мобільних застосунків OAuth 2.0. На Android він працює особливо гладко через Credential Manager API (актуальний підхід на сучасних версіях Android), на iOS потребує окремого SDK GoogleSignIn-iOS та налаштування URL Scheme. Складність — 1 з 5, але є кілька типових граблів, на які наступають при першій інтеграції. Ми вже реалізували Google Sign-In в десятках проектів і знаємо всі нюанси — від плутанини з Web Client ID до обробки відсутності Google Play Services. Отримайте консультацію по вашому проекту — оцінимо складність безкоштовно.
Поточний стан SDK
На Android застарілий GoogleSignIn SDK (com.google.android.gms:play-services-auth) замінено на Credential Manager з GetGoogleIdOption. Старий API все ще працює, але Google рекомендує міграцію. Новий API показує Bottom Sheet з акаунтами Google пристрою — нативний UI без переходу в браузер.
| API | Android версія | UI | Життєвий цикл |
|---|---|---|---|
| GoogleSignIn (застарілий) | Android 4.0+ | Browser / WebView | Підтримка припинена |
| Credential Manager | Сучасні версії | Нативний Bottom Sheet | Активний, рекомендований |
На iOS — GoogleSignIn-iOS SDK (pod GoogleSignIn, SPM google-signin-ios). Вимагає додавання GIDClientID в Info.plist та налаштування URL Scheme для redirect після авторизації.
Часта помилка на iOS: забутий URL Scheme
При налаштуванні GoogleSignIn-iOS необхідно додати в Info.plist URL Scheme виду com.googleusercontent.apps.CLIENT_ID. Без цього авторизація відкриває браузер, але не може повернутися в застосунок. Рішення: додати в Info.plist ключ CFBundleURLTypes з масивом схем.
Як реалізувати Google Sign-In на Android?
// Credential Manager (сучасні версії Android) 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 може змінюватися.
Чому Google Sign-In — стандарт для мобільних застосунків?
Google акаунт є у 90% власників Android-пристроїв. Інтеграція через OAuth 2.0 дає єдину точку входу: користувач авторизується без пароля, отримуєте верифіковані дані (email, ім'я). Це знижує відтік на етапі реєстрації на 20–30% порівняно з формою email+пароль. Крім того, Google забезпечує безпеку — ID Token підписаний RSA SHA-256, що виключає підробку. Економить до 40% часу на розробку порівняно з власною реалізацією OAuth. Знижує витрати на підтримку користувачів — менше забутих паролів.
Як ми інтегруємо Google Sign-In під ключ?
Наша команда з 5+ років досвіду в мобільній розробці підходить до задачі комплексно:
- Аналіз та проектування: визначаємо, які scopes потрібні (email, profile, плюс кастомні, якщо потрібен доступ до Google Drive тощо). Налаштовуємо проект у Google Cloud Console (Web Client ID для Android, iOS Client ID, Service Account для backend).
- Інтеграція на клієнті:
- Android: підключаємо Credential Manager API, обробляємо результат, витягуємо GoogleIdTokenCredential.
- iOS: налаштовуємо GoogleSignIn-iOS, обробляємо callback через UIApplication.shared.open + URL Scheme.
- Обробляємо edge case: якщо немає Google Play Services (пристрої без GMS), використовуємо fallback на ручне введення.
- Серверна частина: реалізуємо верифікацію ID Token на backend (Python / JavaScript / Kotlin). Зберігаємо sub та email, оновлюємо при кожному вході.
- Тестування: пишемо unit-тести на клієнті (mock CredentialManager) та інтеграційні тести на backend. Перевіряємо сценарії: скасування авторизації, невірний токен, закінчення терміну дії.
- Деплой та моніторинг: налаштовуємо логування авторизацій через Firebase Analytics або Metrica. Додаємо Prebid-екран для користувачів, у яких помилка авторизації.
| Параметр | Android (Credential Manager) | iOS (GoogleSignIn-iOS) |
|---|---|---|
| Складність інтеграції | Низька (рідний API) | Середня (налаштування URL Scheme, Info.plist) |
| UI авторизації | Нативний Bottom Sheet | Браузер / WebView |
| Потрібен Google Play Services | Так | Ні |
| Підтримка offline | Так (кеш токена) | Так (кеш токена) |
Що входить в роботу?
- Налаштування проекту в Google Cloud Console (Client ID для кожного оточення).
- Інтеграція на Android (Credential Manager) та на iOS (GoogleSignIn-iOS) з обробкою всіх помилок.
- Backend-верифікація ID Token з документуванням API.
- Тестовий стенд з можливістю симуляції авторизації.
- Міграція зі старого API (якщо у вас вже реалізовано GoogleSignIn) — без втрати користувацьких сесій.
- Підтримка двох тижнів після здачі — виправляємо баги безкоштовно.
Терміни: 4–7 робочих днів на базову інтеграцію (один клієнт + сервер). Якщо потрібна підтримка кількох платформ (Android, iOS, Web) — до 10 днів. Оцінимо ваш проект за один день.
Наш досвід та гарантії
Ми реалізували Google Sign-In у 50+ мобільних застосунках — від стартапів до enterprise-рішень (фінтех, e-commerce, соціальні мережі). Сертифіковані інженери (Google Associate Android Developer, Apple iOS Developer). Даємо гарантію на роботу інтеграції: якщо після здачі виявляться критичні помилки в нашій частині, виправляємо протягом 24 годин.
Зв'яжіться з нами — отримайте безкоштовну консультацію по інтеграції Google Sign-In. Ми розповімо, які підводні камені є у вашому проекті та як їх уникнути.







