Asosiy mazmunga o'tish
Socialift
Hujjatlar bo'limlari
Sozlash

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

  1. 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_id bilan Facebook Login for Business kerak bo'lsa-yu, ro'yxatda mos use case bo'lmasa — “Other” va keyin Business app turini tanlang.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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) va feed (postlar va izohlar); Instagram obyekti — comments, mentions va Direct uchun messages. Shundan keyin har bir Page subscribed_apps orqali app'ni o'rnatishi shart — busiz hodisa kelmaydi.

  8. 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.

  9. 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?

  1. 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.

  2. Maydonlarni to'ldiring

    App ID va App secret — majburiy. Configuration ID ixtiyoriy: to'ldirilsa login havolasiga config_id ketadi va “Scope'lar” maydoni ishlatilmaydi. Consumer app uchun uni bo'sh qoldiring — shunda scope ro'yxati yuboriladi (bo'sh “Scope'lar” = standart ro'yxat, vergul yoki probel bilan ajratiladi).

  3. “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_id va ruxsatlar birinchi haqiqiy login'da tekshiriladi. Secret shifrlangan saqlanadi va to'liq qaytarilmaydi; tahrirlashda maydonni bo'sh qoldirsangiz eskisi qoladi.

  4. 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.

  5. 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_page bilan 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.

App qaysi ruxsatlarni so'rashi kerak? — Platformalar bo'yicha imkoniyatlar jadvali
RuxsatNimaga ruxsat beradiSDK'da qayerda kerak
public_profileLogin qilgan odamning standart profil maydonlariLogin
emailAsosiy email manziliLogin
pages_show_listOdam boshqaradigan Page'lar ro'yxatifb.pages
pages_read_engagementPage kontenti va metama'lumotlarifb.posts, fb.comments, fb.post_insights
pages_manage_postsPage postlarini yaratish, tahrirlash, o'chirishfb.publish_post, fb.delete_post
pages_manage_engagementPage'dagi izohlarni yaratish, tahrirlash, o'chirishfb.reply_comment, fb.hide_comment
read_insightsPage va post statistikasifb.post_insights
pages_manage_metadataPage'ni webhook'ga obuna qilish va sozlamalarini yangilashfb.subscribe_page
pages_messagingPage'ning Messenger yozishmalari; Page messages webhook maydoni uchun kerakFaqat standart ro'yxatda — Socialift'da Messenger metodlari yo'q
leads_retrievalLead Ads formalarida yig'ilgan ma'lumotni o'qishfb.lead_forms, fb.leads
pages_manage_adsPage bilan bog'liq reklamani boshqarishfb.lead_forms
instagram_basicPage orqali Instagram profili va mediaig.profile, ig.media
instagram_content_publishInstagram'ga post e'lon qilishig.publish
instagram_manage_commentsInstagram izohlarini yaratish, yashirish, o'chirishig.comments, ig.reply_comment
instagram_manage_insightsInstagram akkaunt va media statistikasiig.insights, ig.media_insights
instagram_manage_messagesInstagram Direct xabarlarini o'qish va javob berishig.conversations, ig.send_message
ads_readReklama hisobotlari (Ads Insights)Ads.campaigns, Ads.insights_rows
ads_managementReklama hisoblari va reklamani boshqarishAds.create_campaign, fb.ad_context
business_managementBusiness Manager APIStandart 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.

meta_login.py
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_apps orqali 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.

Manbalar

  1. Meta: Create an App
  2. Meta: Facebook Login for Business
  3. Meta: Permissions Reference
  4. Meta: Webhooks for Pages
  5. Meta: App Review submission guide
  6. Meta: Business Verification

Bog'liq sahifalar