LinkedIn API uchun developer app sozlash
LinkedIn integratsiyasi LinkedIn Developer Portal'dagi app'dan boshlanadi, app LinkedIn Page'ga bog'lanadi. Products bo'limida “Sign In with LinkedIn using OpenID Connect” (openid, profile, email) va “Share on LinkedIn” (w_member_social) ni qo'shasiz, Auth bo'limida redirect URL yozasiz va Client ID hamda Client Secret'ni olasiz. Bu ochiq ruxsatlar maxsus tasdiqsiz beriladi.
Yangilangan:
LinkedIn API uchun nima kerak?
LinkedIn Page'ga bog'langan developer app, ikkita self-serve mahsulot va bitta redirect URL. Shu bilan a'zoni login qildirish (OpenID Connect) va uning nomidan post e'lon qilish mumkin. Ochiq ruxsatlardan tashqari hamma narsa — masalan, reklama API — LinkedIn'ning alohida tasdig'ini talab qiladi.
LinkedIn ochiq ruxsatlar deb faqat openid, profile, email va w_member_social ni beradi. Boshqa ruxsatlar va partner dasturlariga ariza topshiriladi.
LinkedIn'ning ochiq API'si shaxsiy xabarlar va Lead Gen Forms uchun kirish bermaydi — Socialift'da ham bu imkoniyatlar yo'q.
LinkedIn Developer Portal'da app yaratish
App yarating
developer.linkedin.com → My apps → Create app. App name, LinkedIn Page (kompaniya sahifasi nomi yoki URL'i), Privacy policy URL va logo kiriting, shartlarga rozilik belgisini qo'yib app'ni yarating. LinkedIn Page bo'lmasa — avval uni yarating.
Page bog'lanishini tasdiqlang
Settings tabida Verify → Generate URL → havolani nusxalab Page super admin'iga yuboring. Super admin havola orqali 30 kun ichida tasdiqlaydi yoki rad etadi. Ayrim mahsulot va imkoniyatlar uchun bu tasdiq talab qilinadi.
Mahsulotlarni qo'shing
Products tabida “Sign In with LinkedIn using OpenID Connect” (
openid,profile,email) va “Share on LinkedIn” (w_member_social) ni qo'shing. Ikkalasi ham self-serve — barcha dasturchilarga ochiq.Redirect URL qo'shing
Auth tabida Authorized redirect URLs ro'yxatiga callback manzilini HTTPS bilan qo'shing. Qoidalar: URL absolyut bo'lishi kerak,
#bo'lmasligi kerak, query parametrlar e'tiborga olinmaydi, so'rovdagiredirect_uriro'yxatdagisiga mos kelishi shart.Client ID va Client Secret'ni ko'chiring
Ikkalasi Auth tabida. Client Secret'ni hech kimga bermang va URL yoki query parametrda yubormang.
Scope'larni tekshiring
Auth tabi app'ga hozir berilgan scope'larni ko'rsatadi. So'rovda app'ga biriktirilmagan scope bo'lsa, LinkedIn “Invalid scope” xatosini qaytaradi.
LinkedIn app'ni Socialift'ga ulash
Kalitlar → LinkedIn app
Kabinetda “Kalitlar” bo'limida “LinkedIn app” kartasini oching. “Konsolga ko'chiring” blokidagi Redirect URI'ni Auth → Authorized redirect URLs'ga qo'ying. LinkedIn uchun webhook manzili yo'q — faqat redirect URI.
Client ID va Client secret'ni kiriting
“Scope'lar” ixtiyoriy: bo'sh qoldirilsa
openid profile email w_member_socialishlatiladi. Qo'shimcha scope yozsangiz, u app'ingizga LinkedIn tomonidan berilgan bo'lishi kerak.“Saqlash va tekshirish” ni bosing
Socialift LinkedIn token endpoint'iga client credentials so'rovi yuboradi. Noto'g'ri ID yoki secret — kalit rad etiladi. “App token berilmaydi” javobi esa kalit to'g'ri ekanini bildiradi: oddiy a'zo login'i uchun bu normal holat.
Akkauntni ulang
“Ulanishlar” bo'limida LinkedIn kartasidagi “Ulash” ni bosing. Access token 60 kun amal qiladi. LinkedIn dasturiy refresh token'ni faqat cheklangan partnerlarga beradi — refresh token bo'lmasa, muddat tugashidan oldin “Ulash” orqali qayta kiring.
Qaysi scope nima uchun kerak?
| Scope | Mahsulot | Nimaga ruxsat beradi | SDK'da |
|---|---|---|---|
openid | Sign In with LinkedIn using OpenID Connect | OIDC orqali autentifikatsiya, ID token | li.me |
profile | Sign In with LinkedIn using OpenID Connect | Ism va profil rasmi (lite profile) | li.me |
email | Sign In with LinkedIn using OpenID Connect | Asosiy email manzili | li.me |
w_member_social | Share on LinkedIn | A'zo nomidan post, izoh va like | li.create_post, li.delete_post |
r_member_social | Ochiq ruxsat emas — LinkedIn tasdig'i kerak | SDK'da postlarni o'qish uchun talab qilinadi | li.posts |
Izohlar va cheklovlar
Bir nechta scope so'ralsa, a'zo hammasiga birga rozilik beradi — alohida tanlay olmaydi. Avval berilganidan boshqa scope to'plami so'ralsa, oldingi barcha access token'lar bekor bo'ladi.
Python SDK'da LinkedIn kalitlari
LinkedIn.from_env() LINKEDIN_CLIENT_ID, LINKEDIN_CLIENT_SECRET va LINKEDIN_API_VERSION ni o'qiydi.
import asyncio
import secrets
from socialift import LinkedIn
REDIRECT_URI = "https://siz.uz/auth/linkedin/callback" # Authorized redirect URLs bilan bir xil
async def main() -> None:
# LINKEDIN_CLIENT_ID, LINKEDIN_CLIENT_SECRET, SOCIALIFT_LICENSE_KEY
async with LinkedIn.from_env() as li:
state = secrets.token_urlsafe(32)
print(li.login_url(redirect_uri=REDIRECT_URI, state=state))
code = input("code: ") # kod 30 daqiqa amal qiladi
bundle = await li.exchange_code(code, redirect_uri=REDIRECT_URI)
me = await li.me(bundle.access_token)
await li.create_post(bundle.access_token, author=li.person_urn(me.id), text="Salom, LinkedIn!")
asyncio.run(main())Aniq ko'rinishda: LinkedIn(client_id="...", client_secret="..."). SDK scope'larni probel bilan birlashtiradi, LinkedIn shuni kutadi.
Versiyalangan /rest/* so'rovlarida LinkedIn-Version sarlavhasi yuboriladi. LinkedIn har bir versiyani kamida bir yil qo'llab-quvvatlaydi; eskirgan versiya xatosi kelsa api_version= yoki LINKEDIN_API_VERSION bilan amaldagi versiyani bering.
Ko'p uchraydigan xatolar
- Redirect URL Auth tabidagidan farq qiladi yoki
http://bilan yozilgan — “Redirect_uri doesn't match”. - Products tabida kerakli mahsulot qo'shilmagan — “Invalid scope”.
- Scope'lar vergul bilan birlashtirilgan — LinkedIn probel bilan ajratilgan ro'yxat kutadi.
- Authorization code darhol almashtirilmagan — u 30 daqiqadan keyin eskiradi.
- Scope to'plami o'zgartirilgan va eski token'lar ishlashi kutilgan — ular bekor bo'ladi.
- 60 kunlik token muddati kuzatilmagan va refresh token yo'qligi hisobga olinmagan.
- Client Secret frontend yoki URL parametrida yuborilgan.
Ko'p so'raladigan savollar
LinkedIn Client ID va Client Secret qayerda?
LinkedIn Developer Portal → My apps → app'ingiz → Auth tabida. Shu tabda Authorized redirect URLs ro'yxati va app'ga berilgan scope'lar ham ko'rinadi.
LinkedIn app yaratish uchun kompaniya sahifasi shartmi?
Ha, app yaratish formasida LinkedIn Page ko'rsatiladi. Sahifa bo'lmasa, avval uni yarating. Ayrim mahsulotlar uchun Page super admin app'ni Settings → Verify orqali yuborilgan havola bilan tasdiqlashi kerak.
w_member_social uchun App Review kerakmi?
Yo'q. w_member_social “Share on LinkedIn” mahsuloti orqali beriladi va u barcha dasturchilarga ochiq self-serve ruxsat. Reklama kabi boshqa ruxsatlar esa ariza va LinkedIn tasdig'ini talab qiladi.
LinkedIn access token qancha amal qiladi?
Hozir barcha access token'lar 60 kunlik beriladi. Dasturiy refresh token faqat cheklangan partnerlarga yoqiladi; qolganlar uchun a'zo qayta avtorizatsiyadan o'tadi — LinkedIn'da login bo'lsa va token tugamagan bo'lsa, rozilik oynasi o'tkazib yuboriladi.
Socialift orqali LinkedIn'da shaxsiy xabar yuborsa bo'ladimi?
Yo'q. Standart sozlamada Socialift a'zo profili va uning nomidan post bilan ishlaydi (w_member_social). LinkedIn ochiq API'si shaxsiy xabarlar va Lead Gen Forms uchun kirish bermaydi, shuning uchun Socialift'da bular yo'q.