Linkedin OAuth2授权码错误

Linkedin OAuth2 authorization code error

我正在尝试从 java 网络应用程序通过 Linkedin Auth2 进行连接:

  1. 在 linkedin 中添加了我自己的应用程序。
  2. 生成授权URL:https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=XXX&scope=r_basicprofile%20r_fullprofile%20r_emailaddress&state=DCEEFWF454Us5dffef424&redirect_uri=http://localhost:9090/springmvc/token.htm
  3. 在新弹出窗口中介绍我的 login/password for linkedin。
  4. 成功取回redirect_uri之前的请求,获取授权码"code"
  5. 生成访问令牌URL
  6. 制作一个POST:https://www.linkedin.com/uas/oauth2/accessToken?grant_type=authorization_code&code=YYY&redirect_uri=http://localhost:9090/SpringMVC/token.htm&client_id=XXX&client_secret=ZZZ
  7. 获取下一个响应错误:{"error_description":"missing required parameters, includes an invalid parameter value, parameter more than once. : Unable to retrieve access token : appId or redirect uri does not match authorization code or authorization code expired","error":"invalid_request"}

我已验证 url 参数正确: - "code" 是第 4 步收到的令牌。

你的 redirect_uri 参数的值必须是 URL 编码的,所以在 6.do:

 https://www.linkedin.com/uas/oauth2/accessToken?grant_type=authorization_code&code=YYY&redirect_uri=http%3A%2F%2Flocalhost%3A9090%2FSpringMVC%2Ftoken.htm&client_id=XXX&client_secret=ZZZ

它不需要作为 POST 发送,而是作为 GET 发送。

我也被这个问题困扰了很长时间。请记住我所做的一些事情并最终将其整理出来。

  1. 点击 api 以使用获取请求获取授权码。
  2. 授权码的有效期约为 20 秒,因此很难从 url 中手动复制代码并请求令牌访问。您应该以编程方式进行。
  3. 发出 post 获取访问令牌的请求。
  4. 最重要的是:我创建的旧 linkedin 应用程序无法正常工作并出现上述错误。创建一个新的 linkedin 应用程序并尝试。这样做对我有用。

我假设所有其他参数如 client_id、secret、redirect_uri 都是正确的。

请尝试告诉我们。

谢谢。

如果您要发送访问令牌请求,则必须是 POST 请求

Refer the OAuth Documentation

我实际上从我的 Eclipse 控制台复制了整个 URL 到 URL 它仍然有效

在你的情况下,问题出在 URL 编码上,正如 HanZ 所说。 您必须针对 Post 请求对 URL 进行编码。