Linkedin OAuth2授权码错误

时间:2015-04-22 17:10:58

标签: rest redirect get oauth-2.0 linkedin

我正在尝试通过Linkedin Auth2从java Web应用程序连接:

  1. 在linkedin中添加了我自己的应用程序。
  2. 生成授权网址: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. 在新弹出窗口中介绍我的登录名/密码。
  4. 在redirect_uri previus上取回成功请求,并获取授权码“code”
  5. 生成accessToken网址
  6. 使用: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. 发帖
  8. 获取响应中的下一个错误:{“error_description”:“缺少必需参数,包含无效参数值,参数多次。:无法检索访问令牌:appId或重定向uri与授权代码或授权代码过期不匹配”, “错误”: “INVALID_REQUEST”}
  9. 我已验证的网址参数是否正确:   - “code”是第4步的令牌接收。

    • “redirect_uri”与第2步和第4步中的网址相同。我在我的APP上的“OAuth 2.0重定向网址”部分添加了此网址。

    • “client_id”和“client_secret”是我的APP上的“客户端API”和“秘密API”。

    • 第一次和第二次请求之间的时间少于20秒。

3 个答案:

答案 0 :(得分:5)

redirect_uri参数的值必须是网址编码的,所以在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 :(得分:1)

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

Refer the OAuth Documentation

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

在你的情况下,问题在于URL编码正如HanZ所说。 您必须为发布请求编码您的URL。

答案 2 :(得分:0)

我也很久没遇到这个问题了。请记住我做的一些事情并最终将其整理出来。

  1. 点击api,使用get request获取授权码。
  2. 授权代码的生命周期约为20秒,因此很难从URL手动复制代码并请求令牌访问。你应该以编程方式进行。
  3. 发出获取访问令牌的帖子请求。
  4. 最重要的是:我创建的旧版应用程序无法正常工作并出现上述错误。创建一个新的linkedin应用程序并尝试。这样做对我有用。
  5. 我假设所有其他参数如client_id,secret,redirect_uri都是正确的。

    请尝试告诉我们。

    感谢。