LinkedIn OAuth2:"无法验证访问令牌"

Mar*_*ell 9 oauth linkedin oauth-2.0

当且仅当用户在发出OAuth2请求时登录LinkedIn时,它才有效.

如果用户未登录,则会遇到错误.

我们行动的顺序:

  • 成功获取新访问令牌
  • 使用访问令牌,发布到api端点 https://api.linkedin.com/v1/people/\~

在此之后,我们收到401以下内容:

{
  "errorCode": 0,
  "message": "Unable to verify access token",
  "requestId": "C0DUCX81SA",
  "status": 401,
  "timestamp": 1421946470523
}
Run Code Online (Sandbox Code Playgroud)

有时,经过一段时间后,使用相同的访问令牌重试会产生200.有时不会.

如果用户在此"401周期"期间登录到LinkedIn,则神奇地以前获取的访问令牌开始工作.

我不知道如何解决这个问题,因为它似乎是LinkedIn的一个问题.

有人有任何建议或者之前有人看过这种行为吗?

我们尝试过cookie设置,在请求之前等待一段时间.

我们正在向Zotonic [1]添加LinkedIn OAuth2身份验证,但现在仍然使用非工作模块.

[1] http://zotonic.com/

编辑:

有人提到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

我在这些讨论中尝试了所有建议,但无济于事.

编辑#2:

检查LinkedIn上的第一个讨论表明我并不是唯一一个遇到这些一致性问题的人.如果用户已经清除了cookie或者在OAuth"舞蹈"期间必须登录LinkedIn,那么在LinkedIn上会出现问题 https://developer.linkedin.com/forum/unable-verify-access-token#comment-36950

更新

解决了,感谢Matthijs Bierman,请看下面的答案.

Gro*_*osa 20

对我来说https://api.linkedin.com/v1/people/~?format=json&oauth2_access_token=[accessToken]不起作用.

添加reguest标头

授权:持票人[accessToken]

直到我通过链接在sdk并测试,并发现他们还要求你添加请求标题之前没有工作

x-li-src:msdk

通过这两个标题,可以调用https://api.linkedin.com/v1/people/~?format=json.

希望Linkedin很快修复这个无证件的要求......


Mat*_*man 6

我们通过电话交谈,结果发现你遇到了和这里一样的问题.LinkedIn不接受Authentication标题并期望一个请求参数:oauth2_access_token.

  • 确实问题是类似的.似乎对Authorization标头和访问标记查询参数有不同的处理方式.混淆LinkedIn示例使用Authorization标头. (2认同)

PAN*_*RMA 5

来自移动SDK的AccessToken会出现此错误:

使用Web OAuth 2.0  协议生成的accessTokens不会遇到任何问题.仅当移动(iOS/Android)SDK,后端使用accessToken来获取用户详细信息时,才会出现此问题.

解决方案:提供以下2个标题

  1. 授权
  2. x-li-src(跳过网页)

例如:

网址:https://api.linkedin.com/v1/people/~? format = json

报头(一个或多个):

Authorization: Bearer AQVYqTNB3bFRAIatBcp4hM1r-......

x-li-src:  msdk 
Run Code Online (Sandbox Code Playgroud)

注意:

如果使用OAuth 2.0生成AccessToken,则可以通过仅删除第二个标头(x-li-src)来使用上述相同的api.