Проблема с переходом на версию 2.0 Linkedin API - PullRequest
0 голосов
/ 18 декабря 2018

недавно linkedin отправил электронное письмо с напоминанием:

Важное обновление: Всем разработчикам необходимо перейти на версию 2.0 наших API и OAuth 2.0 к 1 марта 2019 года.подробнее

Я использую Linkedin Rest API для получения информации о пользователе после авторизации.Старый API v1 был: https://api.linkedin.com/v1/people/~

Глядя на руководство по миграции, найденное здесь: https://docs.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/migration-faq?context=linkedin/consumer/context

этот запрос необходимо изменить.Я попытался сделать следующие запросы:

https://api.linkedin.com/v2/me

, чтобы получить основную информацию пользователя (как имя и фамилия)

, а затем:

https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))

, чтобы получить адрес электронной почты пользователя

К сожалению, первый запрос всегда возвращает:

{
    "serviceErrorCode": 100,
    "message": "Not enough permissions to access: GET /me",
    "status": 403
}

Я много раз искал здесь на stackoverflow и многие предполагают, что вынужно подписаться как партнер, чтобы получить доступ к v2 api

здесь: https://business.linkedin.com/marketing-solutions/marketing-partners/become-a-partner/marketing-developer-program

Linkedin в руководстве по миграции говорит:

Мой разработчику приложения есть доступ к API v2? Любое приложение для разработчиков, созданное через Портал разработчиков LinkedIn после 15 декабря 2018 года, автоматически имеет доступ к API v2.

А как насчет существующих приложений для разработчиков? Если ваше приложение для разработчиков отправило успешный запрос API v1 с 1 октября 2018 года, ваше приложение разработчика автоматически получит доступ к API v2.

и далее, если я запрашиваю API emailAddress v2, Я получаю правильный ответ ... так что я не думаю, что мне нужно составить форму, чтобы стать партнером.

В чем проблема?

Здесь полный путь дляпроверка подлинности и вызовы API:

1) Перейти на страницу авторизации для запроса разрешений

window.location.href = "https://www.linkedin.com/oauth/v2/authorization?response_type=code" +
        "&client_id=" + linkedin_id + "&redirect_uri=" + redirect_uri +
        "&state=" + state + "&scope=r_basicprofile+r_emailaddress"

2) Получить токен доступа

request = ("https://www.linkedin.com/oauth/v2/accessToken?grant_type=authorization_code&code=" +
                     code + "&redirect_uri=" +
                     redirect_uri + "&client_id="
                     + linkedin_id +
                     "&client_secret=" + linkedin_secret)

response = requests.get(request)

3) Токен доступаПолучено, мы можем запросить информацию о пользователе ВСЕГДА 403

headers = {"Authorization": "Bearer "+token }
    get_user = requests.get('https://api.linkedin.com/v2/me', headers=headers)

4) Получить user_email работает

get_user_email = requests.get('https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))', headers=headers)

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Попробуйте:

изменить на первом шаге: & scope = r_basicprofile + r_emailaddress в & scope = r_liteprofile + r_emailaddress

вызвать это: https://api.linkedin.com/v2/me?projection=(id,firstName,lastName,profilePicture(displayImage~:playableStreams))

Работать для получения r_liteprofileинформацию вы получите firstName, lastName, profilePicture, id

0 голосов
/ 19 декабря 2018

попробуйте использовать r_liteprofile вместо r_basicprofile, если вам нужны только имя и фамилия

...