我正在尝试从 Java Web 应用程序通过 Linkedin Auth2 进行连接:
- 在 linkedin 中添加了我自己的应用。
- 生成授权 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
- 在新弹出窗口中输入我的 linkedin 登录名/密码。
- 成功返回redirect_uri previus上的请求,并取授权码“code”
- 生成 accessToken URL
- 发个帖子: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
- 获取下一个响应错误:{“error_description”:“缺少必需参数,包括无效参数值,参数不止一次。:无法检索访问 token :appId 或重定向 uri 与授权代码不匹配或授权代码已过期","error":"invalid_request"
我已验证 url 参数是否正确: - “代码”是在第 4 步收到的 token 。
“redirect_uri”与第 2 步和第 4 步中的 URL 相同。我在我的应用程序的“OAuth 2.0 重定向 URL”部分添加了此 URL。
“client_id”和“client_secret”是我APP上的“Client API”和“Secret API”。
第一次和第二次请求之间的时间少于 20 秒。
最佳答案
redirect_uri
参数的值必须是 URL 编码的,所以在 6. 做:
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 发送。
关于rest - Linkedin OAuth2授权码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29804501/