当前位置: 首页 > 知识库问答 >
问题:

Linkedin API访问令牌生成错误

寇照
2023-03-14

我正在尝试生成访问令牌来收集领英数据。我按照领英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

使用API密钥,我生成了带有URL的authorization_code:

https://www.linkedin.com/uas/oauth2/authorization?response_type=code

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

https://www.linkedin.com/uas/oauth2/accessToken?授权类型=授权代码

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

即使在多次验证之后,也会出现相同的错误消息

请帮忙。谢谢。

共有3个答案

柯昱
2023-03-14

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

如果重定向URL完全不同LinkedIn将在显示登录表单之前向您显示错误,但是如果redirect_url与您在LinkedIn应用程序中指定的内容匹配并包含额外的查询参数,则不会收到错误,因此提交登录表单后,您将收到无效代码,结果错误如上。

景英杰
2023-03-14

我也遇到了同样的问题,下面是我解决这个问题的过程。

第1步:身份验证:

  1. 首先,要点击身份验证API来获取身份验证令牌。
  2. 为此,带有Encoded参数的URL将作为GET请求被命中。
  3. 示例:https://www.linkedin.com/oauth/v2/authorization?response_type=code

一旦您将此作为GET请求点击,您将收到一个回调,其中包含一个code和一个可选的state参数。

步骤2:获取访问令牌:

打电话有三个先决条件:

  1. 调用必须是POST
  2. 它必须有一个标头Content-Type,其值为application/x-wan-form-urlencoded
  3. 数据必须在请求正文中发送。
  4. redirect_url的值必须与前一次调用中的值相同。
  5. 对我来说,是:http://localhost:8080/linkedin/callback

这里的技巧是,调用(STEP#1身份验证)是一个GET请求。因此,redirect_url必须进行编程编码。

由于对的第二次调用是< code>POST并且也是< code > application/x-www-form-urlencoded 编码的,因此请求体参数不必显式编码。因此,在这种情况下,< code>redirect_uri将按原样发送(http://localhost:8080/LinkedIn/callback)

杜楚
2023-03-14

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

 类似资料:
  • 当我尝试使用以下命令生成访问令牌时: 它抛出的错误为: {“error_description”:“缺少必需的参数,包括无效的参数值,参数多次。:无法检索访问令牌:appId或重定向uri与授权码不匹配或授权码过期”,“error”:“invalid_request”}。 你能在这个问题上指导我吗?

  • 我一直在尝试使用简单的REST客户端以及Mozilla的REST插件。我收到“HTTP/1.1 401未授权”响应,正文中带有“{”error:“unauthorized_client”、“error_description”:“客户端未授权”}。 我已经成功获取了auth码,下面是访问令牌的POST请求,(范围r_fullprofile) https://www.linkedin.com/uas

  • https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=your_app_client_id&response_type=code&redirect_uri=https%3a%2f%2flogin.microsoftonline.com%2fcommon%2foauth2%2fnativeclient&res

  • 当我试图在访问令牌过期之前使用刷新令牌生成访问令牌时,系统会生成一个新令牌,并且一切正常。但是如果访问令牌过期,则请求返回。 中的方法不是使用我从以前的访问令牌中存储在字典中的标识生成访问令牌吗? 如果上一个更新令牌尚未过期,如何阻止客户端使用相同的刷新令牌请求新的访问令牌? oauthProvider.cs: RefreshTokenProvider.cs: 对不起,英语不好,希望你能理解!

  • 我有访问令牌和刷新令牌。但是访问令牌过期后几个时间,所以我想从刷新令牌为谷歌驱动器API生成访问令牌。所以给我的想法或代码,从谷歌驱动器API刷新令牌生成访问令牌。

  • 我正在研究GitHub应用程序API,在那里我需要使用jwt令牌获得用于安装的访问令牌。 我能够使用link从私钥生成JWT令牌,但当我试图通过Postman生成安装的访问令牌时,它说: URL:https://api.github.com/app/installations/8/access_tokens 授权:承载(JWT令牌) 接受:application/vnd.github.machin