Миграция LinkedIn в API v2 - PullRequest
0 голосов
/ 15 января 2019

Я использую LinkedIn API v1 и увидел объявление:

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

Я реализовал новый поток Oauth2 (он в основном тот же, только изменил конечную точку и разрешение r_basicprofile на r_liteprofile), и он сработал и возвратил код, который я использую в получении токена доступа.

После того, как я получил токен доступа, я делаю один вызов, чтобы вернуть firstName, lastName и id пользователя, и другой, чтобы получить email (до этого был только 1 запрос, но это нормально) .

Здесь я увидел, что с помощью заголовка Authorization он вернул ошибку, в которой говорилось, что я не сообщил токен доступа, но если я поставлю токен доступа в параметре oauth2_access_token, я смогу успешно выполнять запросы.

В своих документах (https://docs.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/sign-in-with-linkedin?context=linkedin/consumer/context) они не говорят, куда поместить токен доступа, а в документах потока Oauth2 (https://docs.microsoft.com/en-us/linkedin/shared/authentication/authorization-code-flow?context=linkedin/consumer/context) он использует заголовок Authorization с API v1). Но, в любом случае, он работал с использованием параметра в URL.

В v1 я делаю:

После Oauth2 авторизация:

URL: https://api.linkedin.com/v1/people/~?oauth2_access_token={{accessToken}}&format=json

После авторизации с использованием Javascript SDK :

URL: https://api.linkedin.com/v1/people/~
Header: oauth_token={{accessToken}}

После авторизации с помощью Mobile SDK (Android) :

URL: https://api.linkedin.com/v1/people/~
Header: Authorization=Bearer {{accessToken}}
Header: x-li-src=msdk
Header: x-li-format=json

Это немного хаотично, потому что каждый из них выполняется по-разному, но я не смог заставить API v1 работать в общем случае для 3 описанных выше случаев. Тем не менее это сработало.

Но теперь, как получить пользовательские данные , используя v2 API ?

Пока я достиг этого только с Oauth2 Flow:

URL: https://api.linkedin.com/v2/me?projection=(...)&oauth2_access_token={{accessToken}}

(Из того, что я видел, что другие люди публиковали сообщения, они использовали заголовок Authorization вместо параметра oauth2_access_token, и я хотел использовать заголовок, но смог заставить его работать только с параметром. Если кто-то знаю, как заставить его работать с заголовком, я был бы признателен).

В любом случае, мой главный вопрос:

Как сделать миграцию с v1 на v2 и заставить ее работать так же, как сейчас с v1? (используя токен, полученный от внешнего интерфейса, а также от мобильное приложение и извлекает пользовательскую информацию из этого токена в серверной части, как в 3 случаях, которые я опубликовал выше, с использованием API v1, из которых мне удалось реализовать только 1-й, используя поток Oauth2).

1 Ответ

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

К сожалению, похоже, что SDK для мобильных устройств и javascript устарели. Смотрите здесь: https://engineering.linkedin.com/blog/2018/12/developer-program-updates

SDK: наши комплекты для разработки JavaScript и мобильных программ (SDK) перестанут работать. Разработчики должны будут перейти на использование OAuth 2.0 непосредственно из своих приложений.

Насколько я могу судить, поскольку поток OAuth доступен только в браузере, теперь вам нужно подключиться к Интернету, чтобы выполнить аутентификацию на мобильном телефоне.

...