Как создать приложение LinkedIn для API
Интеграция с LinkedIn начинается с приложения в LinkedIn Developer Portal, привязанного к LinkedIn Page. Во вкладке Products добавьте «Sign In with LinkedIn using OpenID Connect» (openid, profile, email) и «Share on LinkedIn» (w_member_social), во вкладке Auth укажите redirect URL и скопируйте Client ID и Client Secret. Эти открытые разрешения выдаются без специального одобрения.
Обновлено:
Что нужно для LinkedIn API?
Приложение разработчика, привязанное к LinkedIn Page, два self-serve продукта и один redirect URL. Этого достаточно, чтобы авторизовать участника (OpenID Connect) и публиковать посты от его имени. Всё, что выходит за открытые разрешения, — например, рекламный API, — требует отдельного одобрения LinkedIn.
Открытыми LinkedIn считает только openid, profile, email и w_member_social. На остальные разрешения и партнёрские программы подают заявку.
Открытый API LinkedIn не даёт доступа к личным сообщениям и Lead Gen Forms — в Socialift этих возможностей тоже нет.
Как создать приложение в LinkedIn Developer Portal
Создайте приложение
developer.linkedin.com → My apps → Create app. Укажите App name, LinkedIn Page (название или URL страницы компании), Privacy policy URL и логотип, отметьте согласие с условиями и создайте приложение. Если LinkedIn Page нет — сначала создайте её.
Подтвердите привязку к Page
Во вкладке Settings нажмите Verify → Generate URL, скопируйте ссылку и отправьте супер-админу Page. У супер-админа есть 30 дней, чтобы подтвердить или отклонить запрос. Для некоторых продуктов и функций такое подтверждение обязательно.
Добавьте продукты
Во вкладке Products добавьте «Sign In with LinkedIn using OpenID Connect» (
openid,profile,email) и «Share on LinkedIn» (w_member_social). Оба — self-serve, доступны всем разработчикам.Добавьте redirect URL
Во вкладке Auth добавьте адрес callback с HTTPS в Authorized redirect URLs. Правила: URL абсолютный, без
#, query-параметры игнорируются,redirect_uriв запросе должен совпадать с адресом из списка.Скопируйте Client ID и Client Secret
Оба значения — во вкладке Auth. Никому не передавайте Client Secret и не отправляйте его в URL или query-параметрах.
Проверьте scope
Вкладка Auth показывает scope, доступные приложению сейчас. Если в запросе есть scope, не назначенный приложению, LinkedIn вернёт ошибку «Invalid scope».
Как подключить приложение LinkedIn к Socialift
«Kalitlar» → «LinkedIn app»
В кабинете откройте «Kalitlar» (ключи) и карточку «LinkedIn app». Redirect URI из блока «Konsolga ko'chiring» (скопируйте в консоль) вставьте в Auth → Authorized redirect URLs. Адреса вебхука для LinkedIn нет — только redirect URI.
Введите Client ID и Client secret
Поле «Scope'lar» необязательно: если оставить его пустым, используется
openid profile email w_member_social. Дополнительный scope должен быть выдан вашему приложению со стороны LinkedIn.Нажмите «Saqlash va tekshirish» (сохранить и проверить)
Socialift отправляет запрос client credentials на token endpoint LinkedIn. Неверный ID или секрет — ключ отклоняется. Ответ «приложению токен не выдаётся» означает, что ключ верный: для обычного входа участника это нормально.
Подключите аккаунт
В «Ulanishlar» (подключения) нажмите «Ulash» (подключить) на карточке LinkedIn. Access token действует 60 дней. Программные refresh token LinkedIn выдаёт только ограниченному кругу партнёров — если его нет, войдите заново через «Ulash» до истечения срока.
Какие scope нужны и для чего
| Scope | Продукт | Что даёт | В SDK |
|---|---|---|---|
openid | Sign In with LinkedIn using OpenID Connect | Аутентификация через OIDC, ID token | li.me |
profile | Sign In with LinkedIn using OpenID Connect | Имя и фото профиля (lite profile) | li.me |
email | Sign In with LinkedIn using OpenID Connect | Основной email | li.me |
w_member_social | Share on LinkedIn | Посты, комментарии и лайки от имени участника | li.create_post, li.delete_post |
r_member_social | Не открытое разрешение — нужно одобрение LinkedIn | Требуется в SDK для чтения постов | li.posts |
Примечания и ограничения
Если запрошено несколько scope, участник соглашается на все сразу — выбрать отдельные нельзя. Если запросить набор scope, отличный от ранее выданного, все предыдущие access token становятся недействительными.
Ключи LinkedIn в Python SDK
LinkedIn.from_env() читает LINKEDIN_CLIENT_ID, LINKEDIN_CLIENT_SECRET и LINKEDIN_API_VERSION.
import asyncio
import secrets
from socialift import LinkedIn
REDIRECT_URI = "https://example.com/auth/linkedin/callback" # как в Authorized redirect URLs
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: ") # код живёт 30 минут
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="Привет, LinkedIn!")
asyncio.run(main())Явно: LinkedIn(client_id="...", client_secret="..."). SDK объединяет scope через пробел — так ожидает LinkedIn.
В версионированных запросах /rest/* отправляется заголовок LinkedIn-Version. LinkedIn поддерживает каждую версию не меньше года; при ошибке об устаревшей версии передайте актуальную через api_version= или LINKEDIN_API_VERSION.
Частые ошибки
- Redirect URL отличается от указанного во вкладке Auth или записан с
http://— «Redirect_uri doesn't match». - Нужный продукт не добавлен во вкладке Products — «Invalid scope».
- Scope объединены через запятую — LinkedIn ожидает список через пробел.
- Authorization code не обменян сразу — через 30 минут он истекает.
- Изменили набор scope и ждут, что старые токены продолжат работать, — они аннулируются.
- Не отслеживают 60-дневный срок токена и не учитывают отсутствие refresh token.
- Client Secret отправляется во фронтенде или в параметрах URL.
Частые вопросы
Где найти Client ID и Client Secret LinkedIn?
LinkedIn Developer Portal → My apps → ваше приложение → вкладка Auth. Там же список Authorized redirect URLs и scope, выданные приложению.
Нужна ли страница компании, чтобы создать приложение LinkedIn?
Да, в форме создания указывается LinkedIn Page. Если её нет, сначала создайте страницу. Для некоторых продуктов супер-админ Page должен подтвердить приложение по ссылке из Settings → Verify.
Нужна ли проверка LinkedIn для w_member_social?
Нет. w_member_social выдаётся через продукт «Share on LinkedIn» — это открытое self-serve разрешение для всех разработчиков. Другие разрешения, например рекламные, требуют заявки и одобрения LinkedIn.
Сколько действует access token LinkedIn?
Сейчас все access token выдаются на 60 дней. Программные refresh token включают только ограниченному кругу партнёров; остальные повторяют авторизацию — если участник залогинен в LinkedIn и токен не истёк, экран согласия пропускается.
Можно ли через Socialift писать в личные сообщения LinkedIn?
Нет. В стандартной настройке Socialift работает с профилем участника и постами от его имени (w_member_social). Открытый API LinkedIn не даёт доступа к личным сообщениям и Lead Gen Forms, поэтому в Socialift их нет.