Linkedin OAuth2授权码错误
Linkedin OAuth2 authorization code error
我正在尝试从 java 网络应用程序通过 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
- 在新弹出窗口中介绍我的 login/password for linkedin。
- 成功取回redirect_uri之前的请求,获取授权码"code"
- 生成访问令牌URL
- 制作一个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
- 获取下一个响应错误:{"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" 与第 2 步和第 4 步中的 URL 相同。我在我的 APP 的 "OAuth 2.0 redirect URL" 部分添加了这个 URL。
"client_id"和"client_secret"是我APP上的"Client API"和"Secret API"。
第一次和第二次请求之间的时间少于 20 秒。
你的 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 发送。
我也被这个问题困扰了很长时间。请记住我所做的一些事情并最终将其整理出来。
- 点击 api 以使用获取请求获取授权码。
- 授权码的有效期约为 20 秒,因此很难从 url 中手动复制代码并请求令牌访问。您应该以编程方式进行。
- 发出 post 获取访问令牌的请求。
- 最重要的是:我创建的旧 linkedin 应用程序无法正常工作并出现上述错误。创建一个新的 linkedin 应用程序并尝试。这样做对我有用。
我假设所有其他参数如 client_id、secret、redirect_uri 都是正确的。
请尝试告诉我们。
谢谢。
如果您要发送访问令牌请求,则必须是 POST 请求
我实际上从我的 Eclipse 控制台复制了整个 URL 到 URL 它仍然有效
在你的情况下,问题出在 URL 编码上,正如 HanZ 所说。
您必须针对 Post 请求对 URL 进行编码。
我正在尝试从 java 网络应用程序通过 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
- 在新弹出窗口中介绍我的 login/password for linkedin。
- 成功取回redirect_uri之前的请求,获取授权码"code"
- 生成访问令牌URL
- 制作一个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
- 获取下一个响应错误:{"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" 与第 2 步和第 4 步中的 URL 相同。我在我的 APP 的 "OAuth 2.0 redirect URL" 部分添加了这个 URL。
"client_id"和"client_secret"是我APP上的"Client API"和"Secret API"。
第一次和第二次请求之间的时间少于 20 秒。
你的 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 发送。
我也被这个问题困扰了很长时间。请记住我所做的一些事情并最终将其整理出来。
- 点击 api 以使用获取请求获取授权码。
- 授权码的有效期约为 20 秒,因此很难从 url 中手动复制代码并请求令牌访问。您应该以编程方式进行。
- 发出 post 获取访问令牌的请求。
- 最重要的是:我创建的旧 linkedin 应用程序无法正常工作并出现上述错误。创建一个新的 linkedin 应用程序并尝试。这样做对我有用。
我假设所有其他参数如 client_id、secret、redirect_uri 都是正确的。
请尝试告诉我们。
谢谢。
如果您要发送访问令牌请求,则必须是 POST 请求
我实际上从我的 Eclipse 控制台复制了整个 URL 到 URL 它仍然有效
在你的情况下,问题出在 URL 编码上,正如 HanZ 所说。 您必须针对 Post 请求对 URL 进行编码。