Linkedin API访问令牌生成错误

Ric*_*c K 7 linkedin

我正在尝试生成访问令牌来收集linkedin数据.我按照linkedin API文档中提供的说明进行操作.我在开发者页面中创建了一个应用程序并获得以下内容

Application Details
•   Company:
Fresher
•   Application Name:
xxxxxxxxxx
•   API Key:
75pcum6zb2cael
•   Secret Key:
xxxxxxxxxxxxxxxx
•   OAuth User Token:
xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx
•   OAuth User Secret:
xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx
Run Code Online (Sandbox Code Playgroud)

使用API密钥我使用URL 生成authorization_code:

https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=75pcum6zb2cael&state=DCEEFWF45453sdffef424&redirect_uri=https://www.google.com

但是当我最终尝试使用以下URL生成访问令牌时,我收到了错误响应:

https://www.linkedin.com/uas/oauth2/accessToken?grant_type=authorization_code&code=AUTHORIZATION_CODE&redirect_uri=https://www.google.com&client_id=75pcum6zb2cael&client_secret=xxxxxxxxxxxxxxxx

{"error_description":"缺少必需参数,包括无效参数值,参数多次.:无法检索访问令牌:appId或重定向uri与授权代码或授权代码过期不匹配","错误":"invalid_request" }

即使经过多次验证,也会出现相同的错误消息.

请帮忙.谢谢.

Ric*_*c K 22

最后,我获得了访问令牌.授权代码将在20秒后到期,因此必须在生成授权代码后立即调用访问令牌URL.


Mon*_*nis 10

好吧,我遇到了同样的问题,这是我修复它的过程。

步骤#1:身份验证

  1. 首先,将命中身份验证 API 以获取身份验证令牌。
  2. 为此,带有编码参数的 URL将作为GET请求被命中。
  3. 例子: https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=[your_client_id]&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Flinkedin%2Fcallback&scope=r_emailaddress
  4. 请注意,这里的参数将以编程方式进行编码。
  5. 我的非编码回调 URL 是:http://localhost:8080/linkedin/callback
  6. 因此,我编码的 URL 是:http%3A%2F%2Flocalhost%3A8080%2Flinkedin%2Fcallback

一旦您将其作为 GET 请求命中,您将收到带有 acode和可选state参数的回调。

步骤#2:获取访问令牌:

此调用有三个先决条件:

  1. 呼叫必须是 POST
  2. 它必须有一个Content-Type带有值的标头application/x-www-form-urlencoded
  3. 数据必须在请求正文中发送。
  4. 的值redirect_url 必须与上一次调用中的值相同
  5. 就我而言,它是:http://localhost:8080/linkedin/callback

现在这里的技巧是,(STEP#1 Authentication)中的调用是一个 GET 请求。因此,redirect_url必须以编程方式编码。

由于第二次调用 isPOST并且也被application/x-www-form-urlencoded编码,因此请求正文参数不必显式编码。因此,在这种情况下,redirect_uri将按原样发送(http://localhost:8080/linkedin/callback

这是我通过邮递员获取的访问令牌 API 的快照: 在此处输入图片说明

  • 快照和有关“编码”或“非编码”URL 的详细信息解决了我的问题 (2认同)

web*_*.io 5

我的问题是redirect_uri其中包含带有查询参数的 url(如redirect_uri=encodeURIComponent(http://example.com/callback?query=string))。

如果重定向 url 完全不同,linkedin 会在显示登录表单之前向您显示错误,但如果 redirect_url 与您在linkedin 应用程序中指定的内容相匹配并且包含额外的查询参数,您将不会收到错误信息,因此一旦提交了登录表单,您就可以“会得到一个无效的代码,结果是上面的错误。