Перейти к содержимому
Socialift
Разделы документации
Настройка

Как создать приложение 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

  1. Создайте приложение

    developer.linkedin.com → My apps → Create app. Укажите App name, LinkedIn Page (название или URL страницы компании), Privacy policy URL и логотип, отметьте согласие с условиями и создайте приложение. Если LinkedIn Page нет — сначала создайте её.

  2. Подтвердите привязку к Page

    Во вкладке Settings нажмите Verify → Generate URL, скопируйте ссылку и отправьте супер-админу Page. У супер-админа есть 30 дней, чтобы подтвердить или отклонить запрос. Для некоторых продуктов и функций такое подтверждение обязательно.

  3. Добавьте продукты

    Во вкладке Products добавьте «Sign In with LinkedIn using OpenID Connect» (openid, profile, email) и «Share on LinkedIn» (w_member_social). Оба — self-serve, доступны всем разработчикам.

  4. Добавьте redirect URL

    Во вкладке Auth добавьте адрес callback с HTTPS в Authorized redirect URLs. Правила: URL абсолютный, без #, query-параметры игнорируются, redirect_uri в запросе должен совпадать с адресом из списка.

  5. Скопируйте Client ID и Client Secret

    Оба значения — во вкладке Auth. Никому не передавайте Client Secret и не отправляйте его в URL или query-параметрах.

  6. Проверьте scope

    Вкладка Auth показывает scope, доступные приложению сейчас. Если в запросе есть scope, не назначенный приложению, LinkedIn вернёт ошибку «Invalid scope».

Как подключить приложение LinkedIn к Socialift

  1. «Kalitlar» → «LinkedIn app»

    В кабинете откройте «Kalitlar» (ключи) и карточку «LinkedIn app». Redirect URI из блока «Konsolga ko'chiring» (скопируйте в консоль) вставьте в Auth → Authorized redirect URLs. Адреса вебхука для LinkedIn нет — только redirect URI.

  2. Введите Client ID и Client secret

    Поле «Scope'lar» необязательно: если оставить его пустым, используется openid profile email w_member_social. Дополнительный scope должен быть выдан вашему приложению со стороны LinkedIn.

  3. Нажмите «Saqlash va tekshirish» (сохранить и проверить)

    Socialift отправляет запрос client credentials на token endpoint LinkedIn. Неверный ID или секрет — ключ отклоняется. Ответ «приложению токен не выдаётся» означает, что ключ верный: для обычного входа участника это нормально.

  4. Подключите аккаунт

    В «Ulanishlar» (подключения) нажмите «Ulash» (подключить) на карточке LinkedIn. Access token действует 60 дней. Программные refresh token LinkedIn выдаёт только ограниченному кругу партнёров — если его нет, войдите заново через «Ulash» до истечения срока.

Какие scope нужны и для чего

Какие scope нужны и для чего — Таблица возможностей по платформам
ScopeПродуктЧто даётВ SDK
openidSign In with LinkedIn using OpenID ConnectАутентификация через OIDC, ID tokenli.me
profileSign In with LinkedIn using OpenID ConnectИмя и фото профиля (lite profile)li.me
emailSign In with LinkedIn using OpenID ConnectОсновной emailli.me
w_member_socialShare 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.

linkedin_login.py
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 их нет.

Источники

  1. LinkedIn: Getting Access to LinkedIn APIs
  2. LinkedIn: 3-Legged OAuth Flow
  3. LinkedIn: Sign In with LinkedIn using OpenID Connect
  4. LinkedIn: API versioning
  5. LinkedIn Help: Create a new app for a LinkedIn Page
  6. LinkedIn Help: App verification request

Связанные страницы