Розробка авторизації через Telegram Login у мобільному додатку

Розробка авторизації через Telegram Login Ми часто стикаємося з запитами на інтеграцію Telegram Login. Помилка верифікації hash при інтеграції вхід через Telegram — типовий головний біль мобільних розробників. Клієнт передає дані від Telegram, сервер їх відхиляє. Або вибір методу авторизації: Web

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Розробка авторизації через Telegram Login у мобільному додатку
Середній
~1 день

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Розробка авторизації через Telegram Login

Ми часто стикаємося з запитами на інтеграцію Telegram Login. Помилка верифікації hash при інтеграції вхід через Telegram — типовий головний біль мобільних розробників. Клієнт передає дані від Telegram, сервер їх відхиляє. Або вибір методу авторизації: WebView проти Deep Link — призводить до архітектурних рішень, які потім важко переробити. Розберемося, які підводні камені чекають і як їх уникнути. Наш досвід 15+ проєктів за 5 років на ринку показує, що правильний вибір на старті економить до 2 тижнів розробки та до 40% бюджету.

Чому Telegram Login складніший за звичайний OAuth?

На відміну від стандартних провайдерів (Google, Apple), Telegram не повертає access token і не підтримує refresh. Вся авторизація базується на одноразовому наборі даних, який потрібно верифікувати на сервері. Це схоже на signed request у Facebook, але з іншим алгоритмом. Відсутність токена означає, що кожне відкриття сесії потребує повторної авторизації, якщо не зберігати дані локально.

Проблеми, які ми вирішуємо

Telegram Login — нестандартний OAuth. У Telegram немає OIDC-сумісного провайдера, немає звичного Authorization Code Flow. Натомість — власний віджет/протокол із криптографічною верифікацією через HMAC-SHA256. Це потребує акуратної реалізації на стороні сервера та кількох варіантів на клієнті залежно від завдання.

Ключові складності:

  • Відсутність OIDC: Telegram використовує кастомний протокол із HMAC-SHA256, що сильно відрізняється від Google або Apple.
  • Edge-case: користувач без Telegram, без username, із застарілими даними (auth_date старше 24 годин) — потрібно обробляти окремо.
  • Прив'язка до домену для мобільного додатка — потрібно реєструвати проміжний домен, що збільшує час впровадження на 1-2 дні.
  • Потрібно дотримуватися правил коректної верифікації Telegram API.

Два варіанти Telegram Login для мобільних додатків

Telegram Login Widget — JavaScript-віджет для вебу, який відкривається в WebView всередині додатка. Користувач натискає «Увійти через Telegram», з'являється popup або QR, користувач підтверджує в Telegram-додатку. Callback приходить у WebView з даними користувача. Найпростіший варіант, мінімум коду.

Telegram Bot + Deep Link — більш нативний підхід для мобільних. Бот генерує одноразове посилання tg://resolve?domain=YOUR_BOT&start=AUTH_TOKEN. Додаток відкриває це посилання — система відкриває Telegram з чатом бота. Користувач натискає Start, бот отримує повідомлення /start AUTH_TOKEN через Webhook, верифікує токен, викликає ваш API. Додаток чекає callback через WebSocket або polling.

Другий варіант складніший архітектурно, але дає повністю нативний UX: Telegram відкривається як звичайний додаток через Universal Link, не WebView. Deep Link знижує кількість невдалих авторизацій на 40% порівняно з WebView, що безпосередньо впливає на конверсію.

Коли варто обрати Deep Link, а коли WebView?

Якщо додаток преміум-класу і нативний досвід важливий — обирайте Deep Link через бота. Якщо час виходу на ринок критичний, а UX можна спростити — підійде WebView. Наш досвід показує, що 70% клієнтів починають з WebView для MVP, а потім мігрують на Deep Link, коли з'являється бюджет. WebView варіант у 2 рази швидший у реалізації, але Deep Link дає більше гнучкості в майбутньому.

WebView vs Deep Link: порівняльна таблиця

Параметр WebView Widget Deep Link через бота
UX WebView з попапом, менш нативно Повністю нативний перехід у Telegram
Складність реалізації Низька, все на клієнті Висока: клієнт + сервер (Webhook, WebSocket)
Час розробки ~1 тиждень ~2 тижні
Надійність fallback Легко зробити fallback на інший метод Потрібен fallback на випадок відсутності Telegram
Вимоги до сервера Мінімальні (простий ендпоінт) Стабільний Webhook, база даних для токенів

Як провести верифікацію даних Telegram: покрокова інструкція

  1. Отримайте дані авторизації від клієнта (id, first_name, username, auth_date, hash).
  2. Видаліть хеш із набору даних.
  3. Відсортуйте решту пар ключ-значення за ключем.
  4. Сформуйте рядок виду key=value, розділені символом нового рядка.
  5. Обчисліть SHA256 від bot_token (використовуйте його як ключ HMAC).
  6. Обчисліть HMAC-SHA256 від рядка з використанням цього ключа.
  7. Порівняйте отриманий хеш із переданим hash.
  8. Перевірте, що auth_date не старше 24 годин (86400 секунд).
# Python (серверна сторона) import hashlib import hmac import time def verify_telegram_auth(bot_token: str, auth_data: dict) -> bool: check_hash = auth_data.pop('hash') # Рядок для верифікації: відсортовані пари key=value через \n data_check_string = '\n'.join( f'{k}={v}' for k, v in sorted(auth_data.items()) ) # Секрет — SHA256 від bot token (не сам токен) secret_key = hashlib.sha256(bot_token.encode()).digest() # HMAC-SHA256 calculated_hash = hmac.new( secret_key, data_check_string.encode(), hashlib.sha256 ).hexdigest() # Перевіряємо хеш і свіжість даних (не старше 24 годин) return (calculated_hash == check_hash and time.time() - int(auth_data['auth_date']) < 86400) 

Реалізація WebView варіанту

На мобільному клієнті найпростіше: завантажуємо HTML-сторінку з Telegram Login Widget у WKWebView (iOS) / WebView (Android). Сторінка повідомляє результат через window.postMessage або URL redirect на custom scheme.

// iOS — обробка redirect з WebView func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if let url = navigationAction.request.url, url.scheme == "myapp", url.host == "telegram-callback" { // Парсимо query params — дані від Telegram let components = URLComponents(url: url, resolvingAgainstBaseURL: false) let params = components?.queryItems?.reduce([String:String]()) { ... } handleTelegramAuth(params) decisionHandler(.cancel) return } decisionHandler(.allow) } 

Етапи розробки інтеграції Telegram Login (під ключ)

Етап Опис Строки
Аудит архітектури Оцінка поточної системи аутентифікації, вибір методу 1 день
Налаштування бота Реєстрація в BotFather, налаштування Webhook 2-3 дні
Розробка серверної верифікації Реалізація HMAC-SHA256, перевірка auth_date 3-5 днів
Клієнтський код Реалізація WebView або Deep Link на iOS/Android 5-7 днів
Інтеграційне тестування Тести з реальними акаунтами Telegram 2-3 дні
Документування Опис схеми авторизації для вашої команди 1 день
Підтримка після деплою Виправлення помилок, консультації 2 тижні

Що входить у реалізацію Telegram Login (вартість від $800)

  • Аудит поточної архітектури та вибір методу.
  • Налаштування бота (BotFather) та Webhook.
  • Розробка серверного ендпоінта верифікації з HMAC-SHA256.
  • Реалізація клієнтського коду (WebView або Deep Link).
  • Інтеграційні тести з реальними акаунтами Telegram.
  • Документація за схемою авторизації.
  • Підтримка після деплою (2 тижні включено).
Обмеження та edge cases
  • Прив'язка до домену: Telegram Login вимагає вказівки домену при створенні віджета або налаштуванні бота. Для мобільного додатка без веб-версії потрібно зареєструвати підконтрольний домен і розмістити на ньому проміжну сторінку.
  • Користувач без Telegram на пристрої: при відкритті tg:// посилання нічого не відбувається. Потрібен fallback — запропонувати завантажити Telegram або переключитися на інший метод входу.
  • Акаунт Telegram не завжди має username (він необов'язковий). first_name є завжди. Email Telegram ніколи не передає.
  • Строки: від 1 до 2 тижнів. WebView варіант — ближче до тижня. Нативний Deep Link через бота — до двох тижнів з урахуванням серверної частини (Webhook, WebSocket).

Для отримання безкоштовної консультації та оцінки вашого проєкту пишіть нам — ми оцінимо ваш проєкт за 1 день. Ми допоможемо обрати оптимальний метод і реалізуємо інтеграцію Telegram Login під ключ з гарантією якості.