Разработка авторизации через 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. Мы расскажем, какие подводные камни есть в вашем проекте и как их избежать.







