OAuth 2.0 integratsiyasi
Socialift Instagram, Facebook, LinkedIn va TikTok uchun OAuth 2.0 oqimini bir xil naqshga keltiradi: har bir klientda login_url() va exchange_code() bor (Meta klientlari darhol uzoq muddatli token qaytaradi), Facebook'da pages() sahifa tokenlarini beradi, yangilash va bekor qilish esa platforma ruxsat bergan joyda mavjud. Xato sinflari hamma joyda bir xil. Telegram OAuth ishlatmaydi — u telefon raqami va kod yoki bot tokeni bilan ulanadi.
Yangilangan:
OAuth 2.0 ijtimoiy tarmoqlarda qanday ishlaydi?
OAuth 2.0 — foydalanuvchi parolini bermasdan, ilovaga ma'lum huquqlarni beradigan avtorizatsiya standarti. Foydalanuvchi platformaning ruxsat oynasiga yo'naltiriladi, roziligini bildiradi, sizning manzilingizga bir martalik kod qaytadi, siz esa uni access tokenga almashtirasiz.
Meta ekotizimida bu zanjir uzunroq: qisqa muddatli token uzoq muddatliga almashtiriladi, undan foydalanuvchining sahifalari olinadi, har bir sahifa uchun alohida sahifa tokeni beriladi, va Instagram bilan ishlash uchun o'sha sahifaga bog'langan Instagram akkaunt ID'si topiladi. Instagram Login (Page'siz) yo'lida zanjir qisqaroq: kod Instagram foydalanuvchi tokeniga almashtiriladi, u 60 kun amal qiladi va kamida 24 soatlik bo'lgach refresh_token() bilan yana 60 kunga uzaytiriladi.
LinkedIn'da oqim — Sign In with LinkedIn using OpenID Connect (openid profile email) va post uchun w_member_social; access token 60 kun amal qiladi, refresh token esa faqat LinkedIn tasdiqlagan Marketing Developer Platform hamkorlariga beriladi — qolganlar qayta login qiladi. TikTok Login Kit'da access token 24 soat, refresh token 365 kun yashaydi; yangilashda yangi refresh token qaytishi mumkin, shuning uchun doim oxirgi javobdagi qiymatni saqlang. Socialift chaqiruvlarni bir xil qiladi, muddatlar esa platformalar qoidasi.
Kodni tokenga almashtirish
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://siz.uz/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 callbackUzoq muddatli tokenga o'tish va sahifa tokenlarini olish shu oqim ichida bajariladi.
Nima tayyor holda keladi
Avtorizatsiya havolasi
Kerakli scope'lar bilan to'g'ri shakllantirilgan havola — har bir platforma uchun.
Token hayotiy sikli
Uzoq muddatli tokenga almashtirish, TokenBundle.expires_at va is_expiring() bilan muddatni tekshirish; bekor qilish — Facebook va TikTok'da revoke().
Sahifa tokenlari
Foydalanuvchi sahifalari va ularga bog'langan Instagram akkauntlari bitta chaqiruvda.
Yagona xatolar
AuthError — ruxsat bekor qilinganda; RateLimitError — limit oshganda. Barcha platformalarda bir xil.
TikTok tokenlari
Login Kit oqimi: 24 soatlik access token va 365 kunlik refresh token; yangilashda refresh token o'zgarishi mumkin — refresh_token() qaytargan oxirgi qiymatni saqlang.
Telegram — OAuth'siz
Akkaunt telefon raqami, kod va 2FA paroli bilan, bot esa BotFather tokeni bilan ulanadi.
OAuth'ni xavfsiz amalga oshirish
- state parametridan foydalaning va uni sessiya bilan bog'lang — CSRF himoyasi.
- redirect_uri Meta, LinkedIn yoki TikTok konsolidagi qiymat bilan aynan bir xil bo'lsin. O'z ilovangiz kalitlarini panelning «Kalitlar» sahifasiga qo'shsangiz, aniq redirect URL o'sha yerda ko'rsatiladi.
- Tokenlarni shifrlangan holda saqlang va loglarga chiqarmang.
- Token muddati tugashini oldindan kuzating va foydalanuvchiga qayta ulanishni taklif qiling.
- Faqat haqiqatan kerak bo'lgan scope'larni so'rang — ortiqchasi App Review'ni qiyinlashtiradi.
Ko'p so'raladigan savollar
Uzoq muddatli token qancha yashaydi?
Meta'ning uzoq muddatli foydalanuvchi tokeni taxminan 60 kun yashaydi; Instagram Login tokeni ham 60 kunlik va kamida 24 soatlik bo'lgach refresh_token() bilan uzaytiriladi. Uzoq muddatli tokendan olingan sahifa tokenining belgilangan muddati yo'q. Parol o'zgarsa yoki ruxsat bekor qilinsa tokenlar darhol yaroqsiz bo'ladi — qayta ulanish oqimi doim tayyor tursin.
Sahifa tokeni bilan foydalanuvchi tokeni farqi nima?
Foydalanuvchi tokeni odam nomidan ishlaydi va uning sahifalari ro'yxatini olishga imkon beradi. Sahifa tokeni aniq bir sahifa nomidan ishlaydi — Instagram Facebook sahifasi orqali ulangan bo'lsa (Instagram.via_facebook), Direct va e'lonlar aynan shu token bilan ishlaydi. Instagram Login'da sahifa yo'q: Instagram foydalanuvchi tokeni ishlatiladi.
Foydalanuvchi ruxsatni bekor qilsa nima bo'ladi?
Keyingi chaqiruvda AuthError qaytadi. To'g'ri xatti-harakat — ulanishni «uzilgan» deb belgilash va foydalanuvchiga qayta login havolasini ko'rsatish.
Telegram ham OAuth orqali ulanadimi?
Yo'q. Telegram akkaunti telefon raqami, Telegram yuborgan kod va yoqilgan bo'lsa 2FA paroli bilan ulanadi; bot esa BotFather bergan token bilan. Panelning «Ulanishlar» sahifasida ikkala usul bor, tokenlar serverda shifrlangan holda saqlanadi va brauzerga yuborilmaydi.
Manbalar
Bog'liq sahifalar
Login oqimini bir kunda yig'ing
Token oling va OAuth callback'ini bugun ishga tushiring.
Bepul token olish →