Перейти к содержимому
Socialift
Возможность

Интеграция OAuth 2.0

Socialift приводит поток OAuth 2.0 для Instagram, Facebook, LinkedIn и TikTok к единому шаблону: у каждого клиента есть login_url() и exchange_code() (клиенты Meta сразу возвращают долгоживущий токен), у Facebook pages() отдаёт токены страниц, а обновление и отзыв есть там, где их поддерживает платформа. Классы ошибок везде одинаковые. Telegram не использует OAuth — он подключается по номеру телефона и коду или по токену бота.

Обновлено:

Как работает OAuth 2.0 в социальных сетях

OAuth 2.0 — стандарт авторизации, который даёт приложению определённые права без передачи пароля пользователя. Пользователь попадает на экран разрешений платформы, подтверждает согласие, на ваш адрес возвращается одноразовый код, и вы обмениваете его на access token.

В экосистеме Meta эта цепочка длиннее: короткоживущий токен меняется на долгоживущий, из него получают страницы пользователя, для каждой страницы выдаётся отдельный токен страницы, а для работы с Instagram находят ID аккаунта, привязанного к этой странице. В варианте Instagram Login (без страницы) цепочка короче: код меняется на токен пользователя Instagram на 60 дней, который после 24 часов можно продлить ещё на 60 дней через refresh_token().

В LinkedIn поток — Sign In with LinkedIn using OpenID Connect (openid profile email) и w_member_social для публикаций; access token живёт 60 дней, а refresh token выдаётся только одобренным партнёрам Marketing Developer Platform — остальным нужен повторный вход. В TikTok Login Kit access token живёт 24 часа, refresh token — 365 дней; при обновлении может прийти новый refresh token, поэтому всегда сохраняйте значение из последнего ответа. Socialift унифицирует вызовы, а сроки задают сами платформы.

Обмен кода на токен

callback.py
import asyncio
from socialift import Facebook

async def main(code: str):
    # FACEBOOK_APP_ID, FACEBOOK_APP_SECRET, SOCIALIFT_LICENSE_KEY
    async with Facebook.from_env() as fb:
        token = await fb.exchange_code(code, redirect_uri="https://ваш-домен/cb")
        for page in await fb.pages(token.access_token):
            print(page.name, "→ instagram:", page.instagram_username)

asyncio.run(main(code="..."))  # ?code= from the OAuth callback

Переход на долгоживущий токен и получение токенов страниц выполняются внутри этого же потока.

Что доступно сразу

01

Ссылка авторизации

Корректно собранная ссылка с нужными scope — для каждой платформы.

02

Жизненный цикл токена

Обмен на долгоживущий токен, проверка срока через TokenBundle.expires_at и is_expiring(); отзыв — revoke() в Facebook и TikTok.

03

Токены страниц

Страницы пользователя и привязанные к ним Instagram-аккаунты одним вызовом.

04

Единые ошибки

AuthError при отзыве доступа, RateLimitError при превышении лимита. Одинаково на всех платформах.

05

Токены TikTok

Поток Login Kit: access token на 24 часа и refresh token на 365 дней; при обновлении refresh token может смениться — сохраняйте последнее значение из ответа refresh_token().

06

Telegram — без OAuth

Аккаунт подключается по номеру телефона, коду и паролю 2FA, бот — по токену от BotFather.

Как реализовать OAuth безопасно

  • Используйте параметр state и связывайте его с сессией — защита от CSRF.
  • redirect_uri должен точно совпадать со значением в консоли Meta, LinkedIn или TikTok. Если вы добавите ключи своего приложения на странице «Kalitlar» (ключи) в кабинете, точный redirect URL будет показан там же.
  • Храните токены в зашифрованном виде и не пишите их в логи.
  • Заранее отслеживайте истечение токена и предлагайте пользователю переподключиться.
  • Запрашивайте только действительно нужные scope — лишние усложняют App Review.

Частые вопросы

Сколько живёт долгоживущий токен?

Долгоживущий пользовательский токен Meta живёт около 60 дней; токен Instagram Login тоже рассчитан на 60 дней и после 24 часов продлевается через refresh_token(). У токена страницы, полученного из долгоживущего токена, фиксированного срока нет. Смена пароля или отзыв доступа сразу делает токены недействительными — поток переподключения должен быть готов всегда.

Чем токен страницы отличается от пользовательского?

Пользовательский токен действует от имени человека и позволяет получить список его страниц. Токен страницы действует от имени конкретной страницы — если Instagram подключён через страницу Facebook (Instagram.via_facebook), Direct и публикации используют именно его. При Instagram Login страницы нет: используется токен пользователя Instagram.

Что происходит, если пользователь отозвал доступ?

При следующем вызове вернётся AuthError. Правильное поведение — пометить подключение как разорванное и показать пользователю ссылку на повторный вход.

Telegram тоже подключается через OAuth?

Нет. Аккаунт Telegram подключается по номеру телефона, коду от Telegram и, если включён, паролю 2FA; бот — по токену от BotFather. Оба способа есть на странице «Ulanishlar» (подключения) в кабинете, токены хранятся на сервере в зашифрованном виде и не передаются в браузер.

Источники

  1. Meta — Get Long-Lived Access Tokens
  2. Meta — Instagram Platform overview
  3. Meta — Refresh Instagram access token
  4. LinkedIn — Programmatic refresh tokens
  5. TikTok — Manage user access tokens

Связанные страницы

Соберите поток входа за день

Получите токен и запустите OAuth-callback уже сегодня.

Получить бесплатный токен →