Розробка авторизації через Facebook Login
При інтеграції Facebook Login у мобільний додаток розробники часто стикаються з неочевидними проблемами: неправильне налаштування URL scheme, відсутність обробки App Tracking Transparency (ATT), серверна верифікація токена. Здається, що достатньо підключити SDK і викликати логін, але на практиці 40% інцидентів виникають через невірну конфігурацію на стороні iOS або Android. Ми виконали понад 50 інтеграцій і виявили три ключові помилки: ігнорування серверної перевірки токена, запит зайвих permissions і відсутність тестування сценарію без встановленого додатку Facebook. Наші інженери оптимізували процес — економія часу на розробку сягає 40% порівняно з самостійною реалізацією. Отримайте консультацію щодо інтеграції у ваш додаток.
Технічна інтеграція: iOS та Android
Meta SDK: для iOS використовуємо pod 'FacebookLogin' (CocoaPods) або Swift Package Manager. Для Android — implementation 'com.facebook.android:facebook-login:latest'. SDK додає ~4–8 МБ до розміру бінарника. Якщо розмір додатку критичний, є альтернатива — реалізувати OAuth 2.0 PKCE flow через браузер без SDK Meta. PKCE-реалізація зменшує розмір бінарника на 35% порівняно з повним SDK, але втрачає нативний користувацький досвід: немає кнопки «Увійти через Facebook» з фірмовим стилем, немає автоматичного переключення на додаток Facebook. Повний Meta SDK дозволяє запустити інтеграцію в 2-3 рази швидше, ніж вручну писати OAuth PKCE.
| Характеристика | Повний SDK | OAuth PKCE без SDK |
|---|---|---|
| Розмір бінарника | +4–8 МБ | +0 МБ (тільки URL scheme) |
| Нативний UX | Так | Ні (браузерний flow) |
| Час реалізації | 1–2 дні | 3–4 дні (ручна обробка) |
На iOS необхідно:
- Додати в
Info.plistключіFacebookAppID,FacebookDisplayNameта URL Schemefb{app_id}. - В
AppDelegateабоSceneDelegateперевизначитиapplication(_:open:options:)і передати керування вApplicationDelegate.shared. - Для iOS 14+ — запитати дозвіл App Tracking Transparency через
ATTrackingManager.requestTrackingAuthorization(). Без цього Facebook отримає лише обмежені дані.
На Android:
- Додати
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>вAndroidManifest.xml. - Для Android 11+ обов'язково вказати
<queries>з пакетом Facebook, інакше Intent до додатку Facebook не спрацює. - Використовувати
LoginManager.getInstance().logInWithReadPermissions(...)для запуску login flow.
Процес інтеграції Facebook Login
- Реєстрація додатку в Facebook Developers Console та отримання App ID, App Secret.
- Підключення SDK через CocoaPods, Swift Package Manager (iOS) або Gradle (Android).
- Реалізація login flow із запитом permissions (public_profile, email).
- Серверна верифікація токена через Graph API debug_token (обов'язково).
- Тестування на реальних пристроях із встановленим додатком Facebook та без нього.
- Публікація в App Store та Google Play з коректними налаштуваннями.
Які дозволи запитувати?
Мінімальний набір permissions: ["public_profile", "email"]. public_profile віддає id, name, picture. email може бути null — Facebook не верифікує пошту користувача, і той може приховати її в налаштуваннях. Це потрібно обробляти на клієнті та сервері: якщо email не прийшов, запитувати додатково або запропонувати альтернативний спосіб аутентифікації. Запитуйте лише ті права, які дійсно потрібні, щоб не відлякувати користувачів — конверсія входу падає на 20% при запиті зайвих дозволів.
| Тип permissions | Дані | Рівень доступу |
|---|---|---|
| public_profile | id, name, picture | Нижній (без підтвердження) |
| email (може бути null) | Нижній | |
| user_friends | список друзів | Середній (потрібен рев'ю) |
| publish_actions | публікація від імені користувача | Високий (заборонено з 2018 року) |
Graph API та серверна верифікація
Після отримання accessToken клієнт відправляє його на backend. Backend робить запит до Graph API:
GET graph.facebook.com/me?fields=id,name,email,picture.type(large)&access_token=TOKEN id — це App-Scoped ID: один і той самий користувач у різних додатках бачить різні ідентифікатори. Для верифікації використовуємо:
GET graph.facebook.com/debug_token?input_token=TOKEN&access_token=APP_TOKEN Відмітимо: де APP_TOKEN = app_id|app_secret. Відповідь має містити is_valid: true, app_id співпадаючий з вашим, та expires_at не прострочений. Meta рекомендує виконувати серверну перевірку (документація Graph API).
Чому серверна верифікація обов'язкова?
Без неї зловмисник може підробити токен або використати токен від іншого додатку. Серверна перевірка — єдиний надійний спосіб переконатися, що токен випущений саме для вашого Facebook App і не прострочений. Ми завжди включаємо цей етап в інтеграцію. Гарантія безпеки — сертифікований підхід Meta.
Чек-лист типових проблем
- На iOS кнопка Facebook не відкриває діалог — перевірте налаштування
AppDelegateта URL-схемуfb{app_id}. - На Android Facebook app не виявляється — для Android 11+ обов'язково додати
<queries>в маніфест. - email приходить null — користувач приховав email у налаштуваннях, обробляйте як штатну ситуацію.
- Токен не проходить верифікацію на сервері — перевірте
APP_TOKENта термін дії; переконайтеся, що токен від вашогоapp_id. - Login не працює без додатку Facebook — SDK автоматично переключається на браузер, перевірте обробку deep link.
Як тестувати Facebook Login?
Використовуйте TestFlight (iOS) та Firebase App Distribution (Android). Створіть тестових користувачів у Facebook Developers Console. Перевірте обидва сценарії: коли Facebook app встановлений і коли працює через браузер. Переконайтеся, що deep link (Universal Links / App Links) повертають користувача в додаток після логіну. Починаючи з iOS 14.5, Facebook вимагає запит ATT для доступу до IDFA. Якщо користувач відмовляє, Facebook SDK автоматично використовує альтернативні методи відстеження, але обсяг даних скорочується. Рекомендується заздалегідь підготувати пояснення, навіщо вашому додатку потрібне відстеження.
Що входить у нашу роботу
- Підключення та налаштування Facebook SDK на iOS (Swift) та Android (Kotlin/Java).
- Реалізація login flow з обробкою permissions.
- Серверна верифікація токена через Graph API debug_token.
- Обробка випадків: відсутність email, відхилені права, прострочений токен.
- Тестування на пристроях з/без додатку Facebook.
- Документація по схемі інтеграції та інструкція по публікації в App Store та Google Play.
Терміни роботи: від 5 до 8 робочих днів для обох платформ. Ми вже реалізували понад 50 інтеграцій Facebook Login. Вартість інтеграції від $500. Замовте реалізацію — ми підключимо все за 5–8 днів. Зв'яжіться з нами для оцінки вашого проекту.







