我正在尝试生成访问令牌以收集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
使用 API密钥,我使用以下网址生成 authorization_code :
但是当我最终尝试使用以下URL生成访问令牌时,我收到了错误响应:
{" error_description":"缺少必需参数,包括无效参数 参数值,参数不止一次。 :无法检索访问权限 token:appId或redirect uri与授权代码或 授权代码已过期","错误":" invalid_request"}
即使经过多次验证,也会出现相同的错误消息。
请帮忙。感谢。
答案 0 :(得分:22)
最后,我获得了访问令牌。授权代码将在20秒后到期,因此必须在生成授权代码后立即调用访问令牌URL。
答案 1 :(得分:2)
我的问题出在redirect_uri
中,其中包含带有查询参数的网址(例如redirect_uri=encodeURIComponent(http://example.com/callback?query=string)
)。
如果重定向URL完全不同,linkedin将在显示登录表单之前向您显示错误,但是如果redirect_url与您在linkedin应用程序中指定的内容匹配并且包含额外的查询参数,您将不会获得错误,因此一旦提交登录表单,您将获得一个无效的代码,并导致上述错误。
答案 2 :(得分:1)
此错误可能与范围相关。
在选择范围时,有关应用程序的详细信息,请输入以下消息:
同时选择r_basicprofile和r_fullprofile是多余的。 如果r_basicprofile和r_basicprofile都不会选择r_basicprofile 检查r_fullprofile。
如果您同时选择 r_basicprofile 和 r_fullprofile ,只需取消选中 r_basicprofile ,或将其从Authorization Code Request中删除。
答案 3 :(得分:0)
我遇到了同样的问题,就我而言,我使用了不同的redirect_uri
进行授权和访问令牌。我的"proxy": "localhost:3001"
中有package.json
,它覆盖了我的request_uri
。
所以我的建议是:确保两个请求(后端和服务器端)的主机和redirect_uri
都相同。
答案 4 :(得分:-1)
好吧,我遇到了同样的问题,这是修复该问题的过程。
STEP#1:身份验证:
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
一旦您将此请求作为GET请求,您将收到带有code
和可选state
参数的回调。
步骤2:获取访问令牌:
此调用有三个先决条件:
POST
Content-Type
的标题application/x-www-form-urlencoded
redirect_url
的值必须与上次调用相同。现在的诀窍是,(STEP#1身份验证)中的调用是GET请求。因此,redirect_url
必须以编程方式进行编码。
由于第二个调用是POST
且也是application/x-www-form-urlencoded
编码的,因此请求正文参数不必显式编码。因此,在这种情况下,redirect_uri
将按原样(http://localhost:8080/linkedin/callback)发送