Интеграция 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 унифицирует вызовы, а сроки задают сами платформы.
Обмен кода на токен
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Переход на долгоживущий токен и получение токенов страниц выполняются внутри этого же потока.
Что доступно сразу
Ссылка авторизации
Корректно собранная ссылка с нужными scope — для каждой платформы.
Жизненный цикл токена
Обмен на долгоживущий токен, проверка срока через TokenBundle.expires_at и is_expiring(); отзыв — revoke() в Facebook и TikTok.
Токены страниц
Страницы пользователя и привязанные к ним Instagram-аккаунты одним вызовом.
Единые ошибки
AuthError при отзыве доступа, RateLimitError при превышении лимита. Одинаково на всех платформах.
Токены TikTok
Поток Login Kit: access token на 24 часа и refresh token на 365 дней; при обновлении refresh token может смениться — сохраняйте последнее значение из ответа refresh_token().
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» (подключения) в кабинете, токены хранятся на сервере в зашифрованном виде и не передаются в браузер.
Источники
Связанные страницы
Соберите поток входа за день
Получите токен и запустите OAuth-callback уже сегодня.
Получить бесплатный токен →