2015-01-22 7 views
7

Он работает тогда и только тогда, когда пользователь вступил в LinkedIn во время запроса OAuth2.LinkedIn OAuth2: «Не удалось проверить токен доступа»

Если пользователь не выполнил вход, мы обнаружим ошибку.

Последовательность наших действий:

  • успешно получать свежий маркер доступа
  • с использованием маркера доступа, запись к апи конечной https://api.linkedin.com/v1/people/\~

После этого мы получаем 401 со следующими содержание:

{ 
    "errorCode": 0, 
    "message": "Unable to verify access token", 
    "requestId": "C0DUCX81SA", 
    "status": 401, 
    "timestamp": 1421946470523 
} 

Иногда, после сом Прошло время, повтор с тем же токеном доступа дает 200. Иногда нет.

Если пользователь входит в LinkedIn в течение этого «периода 401», то волшебным образом начинает работать принятый ранее токен доступа.

Я в затруднении, как решить эту проблему, поскольку это похоже на проблему в LinkedIn.

Есть ли у кого-нибудь какие-либо предложения или кто-либо видел это поведение раньше?

Мы попытались настройки печенья, подождите периоды до нашего запроса и т.д.

Мы добавляем аутентификацию LinkedIn OAuth2 к Zotonic [1], но теперь застряли с неработающим модулем.

[1] http://zotonic.com/

Edit:

Кто-то сослался на два обсуждения на LinkedIn. Его ответ теперь с сожалением исчез из обсуждения ниже.

Эти ссылки:

https://developer.linkedin.com/forum/unable-verify-access-token

https://developer.linkedin.com/forum/unauthorized-invalid-or-expired-token-immediately-after-receiving-oauth2-token

Я перепробовал все предложения в этих дискуссиях, но безрезультатно.

Edit # 2:

Проверка первое обсуждение на LinkedIn показывает, что я не только один, имеющий эти вопросы непротиворечивости. Что-то в LinkedIn будет неправильно, если пользователь очистил куки или должен войти в LinkedIn во время «танца» OAuth https://developer.linkedin.com/forum/unable-verify-access-token#comment-36950

Update

решаемая, благодаря Matthijs Бирмана см ответы ниже.

ответ

1

Мы разговаривали по телефону, оказывается, вы столкнулись с той же проблемой, что и here , LinkedIn не принимает заголовок Authentication и ожидает параметр запроса: oauth2_access_token.

+2

Действительно проблема аналогична. Кажется, что для заголовка авторизации и аргумента запроса токена доступа существует другая обработка. Сбив с толку, что в примерах LinkedIn используется заголовок авторизации. –

+0

Я пробую это в 2017 году, и он больше не работает. Я пробовал, как говорят документы (https://developer.linkedin.com/docs/oauth2), используя авторизацию: Bearer {access_token} и запрос с oauth2_access_token = {access_token), оба без успеха. через несколько минут это работает. у кого есть дополнительная информация? Похоже, что на их стороне будет последовательность. – mwm

0

Аутентифицированное состояние пользователя на LinkedIn.com (независимо от того, вошли ли они в систему) не влияет на действительный токен доступа OAuth.Другими словами, пользователь может выйти из LinkedIn.com, и этот токен должен работать до тех пор, пока он не будет отменен или не истек.

Есть ли вероятность, что вы создаете новый токен? Это приведет к тому, что предыдущий недействителен. Это сообщение об ошибке, которое вы поделили, обычно возникает, когда токен обновлен, и вы вызываете вызов API с предыдущим токеном.

+0

Привет, Кайяр, я следую инструкциям на странице https://developer.linkedin.com/documents/authentication. Это дает мне новый токен доступа каждый раз, когда пользователь аутентифицируется против LinkedIn. Разница между входом в LinkedIn и не наблюдалась тремя разными людьми с разными браузерами. В тот момент, когда мы получаем диалог OAuth, где мы должны заполнить электронную почту/пароль в LinkedIn, мы получим указанные выше ошибки. Я также использовал завиток рядом с нашей системой, чтобы проверить, нет ли проблемы с постоянным подключением. –

+0

Камяр, есть ли у вас какие-либо предложения, которые мы могли бы попробовать? На данный момент нам пришлось отправлять всем нашим клиентам и членам письма, что мы не можем использовать проверку подлинности LinkedIn из-за упомянутых проблем с процессом LinkedIn OAuth2. –

2

С помощью Matthijs Bierman мы нашли исправление для нашей проблемы.

Мы прошли аутентификацию с заголовком Authorization: Bearer ..... Если мы используем аргумент запроса oauth2_access_token, то он работает как в случае использования с пользователем LinkedIn, так и без него.

Вывод: не использовать авторизацию заголовок и использовать аргумент запроса oauth2_access_token вместо этого.

1

Я вижу эту же проблему; однако параметр запроса не работает для меня.

Он характеризуется как вопрос описанного: 1) У меня есть действительный маркер 2) Пользователь регистрируется из LinkedIn 3) Запрос о профиле пользователя не удается 4) Подождите пять минут, и он успешно

Вы можете увидеть мой запрос/ответ ниже:

$ curl -v "https://api.linkedin.com/v1/people/~?format=json&oauth2_access_token=$LI_AT" 
* Hostname was NOT found in DNS cache 
* Trying 108.174.10.12... 
* Connected to api.linkedin.com (108.174.10.12) port 443 (#0) 
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 
* Server certificate: tablet.linkedin.com 
* Server certificate: DigiCert SHA2 Secure Server CA 
* Server certificate: DigiCert Global Root CA 
> GET /v1/people/~?format=json&oauth2_access_token=[**obscurred for security sake**] HTTP/1.1 
> User-Agent: curl/7.37.1 
> Host: api.linkedin.com 
> Accept: */* 
> 
< HTTP/1.1 401 Unauthorized 
* Server Apache-Coyote/1.1 is not blacklisted 
< Server: Apache-Coyote/1.1 
< x-li-request-id: LZ2X5Y9DCC 
< Date: Thu, 20 Aug 2015 16:12:52 GMT 
< Vary: * 
< x-li-format: json 
< Content-Type: application/json;charset=UTF-8 
< Content-Length: 142 
< X-Li-Fabric: prod-ltx1 
< Connection: keep-alive 
< X-Li-Pop: prod-lva1 
< X-LI-UUID: lS7xYKc3/BNAj0nmNSsAAA== 
< Set-Cookie: lidc="b=TB76:g=111:u=47:i=1440087172:t=1440094069:s=AQHPHzjyg93X3bnT8KuNvThuwQo5buSS"; Expires=Thu, 20 Aug 2015 18:07:49 GMT; domain=.linkedin.com; Path=/ 
< 
{ 
    "errorCode": 0, 
    "message": "Unable to verify access token", 
    "requestId": "LZ2X5Y9DCC", 
    "status": 401, 
    "timestamp": 1440087172914 
* Connection #0 to host api.linkedin.com left intact 
} 
+1

Вы создаете новый токен, когда вы делаете запрос на ссылку. Если вы попытаетесь использовать старый токен, вы потерпите неудачу – asgaines

+0

Дело в том, что я не создаю новый токен. Кроме того, иногда новый токен работает только около 30 секунд, затем он начинает работать; однако 30 секунд для входа в систему неприемлемо. –

12

Для меня https://api.linkedin.com/v1/people/~?format=json&oauth2_access_token=[accessToken] не работал.

Добавление Header reguest

Авторизация: Знаменосец [маркер доступа]

не работал, пока я не пошел через связанные в SDK и протестирована и обнаружили, что они также требуют, чтобы добавить заголовок запроса

x-li-src: msdk

С этими двумя заголовками работал звонок https://api.linkedin.com/v1/people/~?format=json.

Надеется Linkedin исправляет это нелегальное требование скоро ...

+0

Спасибо. Оно работает! –

+0

Большое спасибо! –

+0

Для меня это работает только с токенами доступа, поступающими с телефона Android и не работает с iOS. – Ben

2

здесь же, каждый раз, когда я получал новый access_token мне пришлось ждать несколько минут, пока он не был действительным. Это было неприемлемо.

Я посмотрел, как разные сайты делают SignIn с LinkedIn, и вот решение, которое сработало для меня.

При обмене AUTH_CODE для того, чтобы получить access_token использовать метод GET вместо POST, например:

GET https://www.linkedin.com/oauth/v2/accessToken?client_id=yourClientId&client_secret=yourClientSecret&grant_type=authorization_code&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2FlinkedInLogin&code=AQQGx11-p1uaQWz2YBWHBcskaGrVrEDeFUo4O2vjolFaKaQ89UhGlR27_yDACNLoxDmYi7AR5sCplwsHLD_ERAVsscFozo-qRl032aFnj2UcUoPjCfo 

Grails интеграция с LinkedIn oauth2 Например: https://github.com/rgrebski/samples/tree/master/grails-linkedin-integration

+0

Это действительно было проблемой в моем случае и должно быть отмечено как потенциальный ответ на проблему. –

+0

Это правда. Когда я изменил обмен AuthCode на процесс AccessToken с запроса POST на запрос GET, ошибка 401 отключена. –

1

Я перепробовал все выше решения, но Бесполезный» т работать со мной. Я изменил свой адрес от

https://www.linkedin.com/oauth/v2/ 

в

https://www.linkedin.com/uas/oauth2/ 

она работала должным образом.

0

Ничего из вышеперечисленного не работало для меня. Кто-нибудь знает, есть ли решение для этого? иногда работает, а иногда и без изменения кода.

0

https://api.linkedin.com/v1/people/~?format=json&oauth2_access_token=<token>

По умолчанию, это возврат в ответ XML, добавив format=json.

Смежные вопросы