Facebook va Instagram API uchun Meta app sozlash
Meta API bilan ishlash uchun developers.facebook.com'da o'z app'ingiz kerak: kerakli use case bilan yaratasiz, App settings → Basic'dan App ID va App Secret'ni olasiz, Business turidagi app'da esa Facebook Login for Business konfiguratsiyasini yaratib config_id olasiz. Keyin redirect URI va webhook'ni sozlaysiz, begona akkauntlar uchun App Review va Business Verification'dan o'tasiz.
Yangilangan:
Meta app'dan nima olinadi?
Meta app uchta qiymat beradi: App ID (ochiq identifikator, login havolasida ketadi), App Secret (maxfiy: login kodini token'ga almashtirish, appsecret_proof imzosi va webhook imzosini tekshirish uchun) va ixtiyoriy Configuration ID (config_id) — Facebook Login for Business konfiguratsiyasi, u login havolasida ruxsatlar ro'yxati (scope) o'rnini bosadi.
Bitta Meta app Facebook Page'lar, Page'ga bog'langan Instagram akkauntlar, Lead Ads va Marketing API'ni qamraydi. Facebook Page'siz Instagram boshqa mahsulot va boshqa kalitlar bilan ishlaydi — bu Instagram Login qo'llanmasida.
App Secret brauzerga, mobil ilovaga yoki ochiq repozitoriyga tushmasligi kerak. Sizib chiqsa — dashboard'da yangisini yarating va hamma joyda almashtiring, jumladan Socialift kabinetidagi Kalitlar sahifasida ham.
Asosiy atamalar
- Use case
- App yaratishda tanlanadigan integratsiya ssenariysi (masalan, “Manage everything on your Page”). Ruxsatlar va mahsulotlar shundan keladi. Yaratilgandan keyin use case'ni olib tashlab bo'lmaydi, faqat mos keladiganini qo'shish mumkin.
- Facebook Login for Business
- Business turidagi app'lar uchun login mahsuloti. Ruxsatlar dashboard'dagi konfiguratsiyada tanlanadi va kodga faqat uning ID'si (
config_id) uzatiladi. - Standard va Advanced Access
- Standard Access'da ruxsatni faqat app'da roli bor odamlar bera oladi. Siz boshqarmaydigan Page va akkauntlar uchun har bir ruxsatga App Review orqali Advanced Access kerak.
- Business Verification
- Kompaniyani Meta oldida tasdiqlash. Advanced Access so'raydigan app tasdiqlangan business portfolio'ga ulangan bo'lishi shart.
Meta app'ni qadamma-qadam yaratish va sozlash
App yarating
developers.facebook.com/apps sahifasida yangi app yaratishni boshlang: nom va aloqa email'ini kiriting, keyin use case'larni tanlang (masalan, “Manage everything on your Page”).
config_idbilan Facebook Login for Business kerak bo'lsa-yu, ro'yxatda mos use case bo'lmasa — “Other” va keyin Business app turini tanlang.Business portfolio ulang
App yaratish oynasi tasdiqlangan yoki tasdiqlanmagan business portfolio ulashni yoki yangisini yaratishni taklif qiladi. Integratsiya egasi bo'ladigan kompaniyani ulang: Advanced Access uchun keyinchalik aynan u tasdiqlanadi.
App ID va App Secret'ni ko'chiring
Ikkalasi App settings → Basic bo'limida. App ID dashboard tepasida ham ko'rinadi. Secret'ni muhit o'zgaruvchisida yoki secret manager'da saqlang.
Redirect URI'ni qo'shing
Facebook Login for Business mahsulotini qo'shing (use case uni o'zi qo'shgan bo'lishi mumkin). Uning sozlamalaridagi Valid OAuth Redirect URIs ro'yxatiga callback manzilini aniq yozing. Strict Mode yoqilgan bo'lsa Meta to'liq moslikni talab qiladi: boshqa yo'l yoki ro'yxatda yo'q query parametr rad etiladi.
Konfiguratsiya yarating va config_id oling
Configurations bo'limida konfiguratsiya yarating (yoki shablondan): nom, token turi, business aktivlar va ruxsatlarni tanlang. Token turi — User access token: Socialift login oqimi kodni uzoq muddatli user token'ga almashtiradi va keyin Page'larni o'qiydi. System user token login havolasida qo'shimcha parametr (
override_default_response_type) talab qiladi, bu oqim uni yubormaydi. Tayyor bo'lgach Configuration ID'ni ko'chiring.Ruxsatlarni use case'ga qo'shing
Use case sozlash ekranida pastdagi jadvaldan faqat integratsiyangiz haqiqatan ishlatadigan ruxsatlarni qo'shing. Meta hujjatiga ko'ra App Review'da rad etilishning eng ko'p sababi — app'ga kerak bo'lmagan ruxsat yoki imkoniyatni so'rash.
Webhook'ni sozlang
Endpoint HTTPS va haqiqiy sertifikat bilan bo'lishi kerak (self-signed qabul qilinmaydi). Callback URL va Verify token'ni kiritib tasdiqlang, so'ng maydonlarga obuna bo'ling: Page obyekti —
leadgen(Lead Ads) vafeed(postlar va izohlar); Instagram obyekti —comments,mentionsva Direct uchunmessages. Shundan keyin har bir Pagesubscribed_appsorqali app'ni o'rnatishi shart — busiz hodisa kelmaydi.Rollar va testerlarni qo'shing
Roles panelida administrator, developer va tester taklif qiling. App Review'gacha ruxsatni faqat app'da (yoki app'ni egallagan business'da) roli bor odamlar bera oladi — o'z Page'laringiz bilan shunday sinaysiz.
App Review va Business Verification'dan o'ting
Siz boshqarmaydigan Page va akkauntlar uchun har bir ruxsatga Advanced Access kerak. Har bir ruxsatga alohida tavsif va ekran yozuvi (foydalanuvchi ruxsat beradi va app uni ishlatadi) tayyorlanadi; topshirishdan oldingi 30 kun ichida shu ruxsat bilan kamida bitta muvaffaqiyatli API chaqiruvi bo'lishi kerak; maxfiylik siyosati URL'i va 1024×1024 ikonka kerak. Advanced Access uchun Business Verification majburiy.
Meta app'ni Socialift'ga qanday qo'shiladi?
Kalitlar → Meta (Facebook) app kartasini oching
Kabinetda “Kalitlar” bo'limini oching va “Meta (Facebook) app” kartasini kengaytiring. Yon paneldagi “Konsolga ko'chiring” blokida Redirect URI kalit saqlanmasdan oldin ham ko'rinadi — uni Valid OAuth Redirect URIs'ga qo'ying.
Maydonlarni to'ldiring
App ID va App secret — majburiy. Configuration ID ixtiyoriy: to'ldirilsa login havolasiga
config_idketadi va “Scope'lar” maydoni ishlatilmaydi. Consumer app uchun uni bo'sh qoldiring — shundascopero'yxati yuboriladi (bo'sh “Scope'lar” = standart ro'yxat, vergul yoki probel bilan ajratiladi).“Saqlash va tekshirish” ni bosing
Socialift ID va secret bilan Meta'dan app access token so'raydi: mos kelsa kalit “tekshirilgan” bo'ladi, rad etilsa Meta xatosi ko'rsatiladi. Bu faqat ID va secret juftligini tekshiradi — redirect URI,
config_idva ruxsatlar birinchi haqiqiy login'da tekshiriladi. Secret shifrlangan saqlanadi va to'liq qaytarilmaydi; tahrirlashda maydonni bo'sh qoldirsangiz eskisi qoladi.Webhook va callback manzillarini ko'chiring
Saqlangandan keyin kartada Webhook URL, Webhook verify token, Deauthorize callback va Data deletion callback chiqadi. O'z app'ingiz alohida webhook manzili oladi va kelgan hodisalar sizning App Secret'ingiz bilan tekshiriladi. Webhook juftligini Webhooks sozlamasiga, deauthorize manzilini Facebook Login sozlamalariga, data deletion manzilini App settings → Basic'dagi maydonga qo'ying.
Akkauntni ulang va Page'larni sinxronlang
“Ulanishlar” bo'limida Facebook kartasidagi “Ulash” ni bosing, keyin “Page'larni sinxronlash” — Page'lar va ularga bog'langan Instagram akkauntlar qo'shiladi. Har bir Page'ni webhook'ga Playground'dan (“Page'lar va webhook” bo'limi) yoki SDK'da
fb.subscribe_pagebilan obuna qiling.
App qaysi ruxsatlarni so'rashi kerak?
Bu Socialift'ning standart “Scope'lar” ro'yxati. config_id ishlatilsa, xuddi shu ruxsatlar konfiguratsiya ichida tanlanadi.
| Ruxsat | Nimaga ruxsat beradi | SDK'da qayerda kerak |
|---|---|---|
public_profile | Login qilgan odamning standart profil maydonlari | Login |
email | Asosiy email manzili | Login |
pages_show_list | Odam boshqaradigan Page'lar ro'yxati | fb.pages |
pages_read_engagement | Page kontenti va metama'lumotlari | fb.posts, fb.comments, fb.post_insights |
pages_manage_posts | Page postlarini yaratish, tahrirlash, o'chirish | fb.publish_post, fb.delete_post |
pages_manage_engagement | Page'dagi izohlarni yaratish, tahrirlash, o'chirish | fb.reply_comment, fb.hide_comment |
read_insights | Page va post statistikasi | fb.post_insights |
pages_manage_metadata | Page'ni webhook'ga obuna qilish va sozlamalarini yangilash | fb.subscribe_page |
pages_messaging | Page'ning Messenger yozishmalari; Page messages webhook maydoni uchun kerak | Faqat standart ro'yxatda — Socialift'da Messenger metodlari yo'q |
leads_retrieval | Lead Ads formalarida yig'ilgan ma'lumotni o'qish | fb.lead_forms, fb.leads |
pages_manage_ads | Page bilan bog'liq reklamani boshqarish | fb.lead_forms |
instagram_basic | Page orqali Instagram profili va media | ig.profile, ig.media |
instagram_content_publish | Instagram'ga post e'lon qilish | ig.publish |
instagram_manage_comments | Instagram izohlarini yaratish, yashirish, o'chirish | ig.comments, ig.reply_comment |
instagram_manage_insights | Instagram akkaunt va media statistikasi | ig.insights, ig.media_insights |
instagram_manage_messages | Instagram Direct xabarlarini o'qish va javob berish | ig.conversations, ig.send_message |
ads_read | Reklama hisobotlari (Ads Insights) | Ads.campaigns, Ads.insights_rows |
ads_management | Reklama hisoblari va reklamani boshqarish | Ads.create_campaign, fb.ad_context |
business_management | Business Manager API | Standart ro'yxatda |
Izohlar va cheklovlar
Meta hujjatiga ko'ra lead'larni to'liq olish uchun ads_management, leads_retrieval, pages_show_list, pages_read_engagement va pages_manage_ads birga kerak. Page orqali Instagram Direct uchun instagram_basic, instagram_manage_messages va pages_manage_metadata kerak.
Kalitlarni Python SDK'da ishlatish
Facebook.from_env() muhitdan FACEBOOK_APP_ID, FACEBOOK_APP_SECRET, FACEBOOK_CONFIG_ID va META_GRAPH_VERSION ni o'qiydi.
import asyncio
import secrets
from socialift import Facebook
REDIRECT_URI = "https://siz.uz/auth/facebook/callback" # Valid OAuth Redirect URIs bilan bir xil
async def main() -> None:
# FACEBOOK_APP_ID, FACEBOOK_APP_SECRET, FACEBOOK_CONFIG_ID, SOCIALIFT_LICENSE_KEY
async with Facebook.from_env() as fb:
state = secrets.token_urlsafe(32) # sessiyada saqlab, callback'da solishtiring
print(fb.login_url(redirect_uri=REDIRECT_URI, state=state))
code = input("code: ")
token = await fb.exchange_code(code, redirect_uri=REDIRECT_URI)
print(await fb.granted_scopes(token.access_token)) # haqiqatda berilgan ruxsatlar
for page in await fb.pages(token.access_token):
await fb.subscribe_page(page.id, page.access_token, fields=["leadgen", "feed"])
asyncio.run(main())Aniq ko'rinishda: Facebook(app_id="...", app_secret="...", config_id="..."). config_id berilsa login_url scope o'rniga config_id yuboradi, berilmasa — scopes ro'yxatini.
exchange_code dagi redirect_uri login havolasidagi bilan belgi-ma-belgi bir xil bo'lishi shart.
Ko'p uchraydigan xatolar
- Redirect URI Valid OAuth Redirect URIs'dagidan farq qiladi (http/https, oxiridagi
/, ortiqcha query parametr). - Meta kartasiga Instagram app ID/secret yozilgan (yoki aksincha) — bu boshqa-boshqa kalitlar.
- Konfiguratsiyada System user access token tanlangan — Socialift login oqimi User access token kutadi.
- Configuration ID to'ldirilgan, lekin ruxsatlar “Scope'lar” maydonida o'zgartirilyapti — bu holda ruxsatlar konfiguratsiyada o'zgartiriladi.
- Webhook app darajasida sozlangan, lekin Page
subscribed_appsorqali obuna qilinmagan — hodisa kelmaydi. - App Review'gacha app'da roli yo'q akkaunt bilan sinalyapti — ruxsatlar berilmaydi.
- Ishlatilmaydigan ruxsatlarga Advanced Access so'ralgan — App Review rad etadi.
- App Secret frontend kodida yoki repozitoriyda turibdi.
Ko'p so'raladigan savollar
Facebook App ID va App Secret qayerda?
Meta App Dashboard → App settings → Basic bo'limida. App ID dashboard tepasida ham ko'rinadi. App Secret faqat serverda saqlanadi va Socialift kabinetining Kalitlar sahifasida shifrlangan holda turadi.
config_id nima va u shartmi?
config_id — Facebook Login for Business konfiguratsiyasining ID'si: ruxsatlar, token turi va aktivlar dashboard'da tanlanadi, kodga faqat ID uzatiladi. Business turidagi app uchun tavsiya etiladi. Consumer app'da uni bo'sh qoldirasiz va ruxsatlar scope bilan so'raladi.
App Review'siz sinab ko'rsa bo'ladimi?
Ha. Standard Access'da app'da roli bor odamlar (administrator, developer, tester) ruxsat bera oladi — o'z Page va akkauntlaringiz bilan to'liq sinaysiz. App Review va Advanced Access faqat siz boshqarmaydigan akkauntlarni ulash uchun kerak.
Nega Page webhook'lari kelmayapti?
Ko'pincha Page app'ni subscribed_apps orqali o'rnatmagan bo'ladi — app darajasidagi sozlama yetarli emas. Shuningdek endpoint HTTPS va haqiqiy sertifikatda ekanini, verify token mosligini va token'da pages_manage_metadata borligini tekshiring.
Instagram uchun alohida app kerakmi?
Page orqali Instagram uchun — yo'q, o'sha Meta app va instagram_* ruxsatlari yetadi. Facebook Page'siz Instagram Login ishlatilsa, o'sha Meta app ichida alohida Instagram app ID va secret bo'ladi va ular Kalitlar'dagi “Instagram Login app” kartasiga yoziladi.
Kalitlar'dan Meta kalitini o'chirsam nima bo'ladi?
Shu kalit orqali ulangan akkauntlar bo'lsa, Socialift ularning ro'yxatini ko'rsatib ogohlantiradi, chunki ularning token'lari shu app secret'isiz ishlamaydi. “Baribir o'chirish va uzish” tanlansa kalit o'chiriladi va akkauntlar uziladi. Kalitni vaqtincha “Faol” holatdan chiqarsangiz, yangi ulanishlar Socialift kalitiga o'tadi, mavjudlari esa ishlayveradi.