1

我正在使用 DHC Web 客户端在 FIWARE-Lab 的 KeyRock GE 实例上测试授权代码授予协议。

到目前为止,我已经成功实现了授权请求,并且我获得了用于访问令牌请求的代码。授权请求的 URL 如下(虽然不是在 DHC 上执行,而是在普通浏览器上执行,所以我可以介绍我的用户和密码):

https://account.lab.fiware.org/oauth2/authorize/?response_type=code&client_id=2122&redirect_uri=http%3A%2F%2Flocalhost%2FCallback

我已经检查了 client_id 和 redirect_uri 在我的 FIWARE-Lab 帐户中与我的应用程序相关的值是否正确。

执行以下请求(无法发布图片,所以我会描述)

POST
https:// account.lab.fiware.org/oauth2/token?grant_type=authorization_code&code=<code>&redirect_uri=http%3A%2F%2Flocalhost%2FCallback -- <code> is the code obtained on the Auth. Request
Authorization: Basic <XXXX> --- <XXXX> is the result of base64(client_id+":"+client_secret)
Content-Type: application/x-www-form-urlencoded

...我收到以下错误消息:

{
"error":{
"message": "create_access_token() takes exactly 3 arguments (2 given)",
"code": 400,
"title": "Bad Request"
}
}

我已经检查了授权是否正确(基本使用我的应用程序中的 OAuth 凭据),并且我使用的是在上一个授权请求中使用的相同 redirect_uri,以及从中获得的代码。

怎么了?

PS:如果我删除任何或所有查询参数,我仍然会得到同样的错误

4

2 回答 2

2

不要在 url 中传递参数。相反,将它们作为查询字符串添加到请求的正文中:

POST /oauth2/token HTTP/1.1
Host: account.lab.fiware.org
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <XXXX> --- <XXXX>
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=1234&redirect_uri=http%3A%2F%2Flocalhost%3A9000%2Fcodecallback.html
于 2015-08-11T14:41:43.570 回答
0

我建议按照演示文稿中的步骤进行操作:

将身份管理和访问控制添加到您的应用程序

它为您提供了有关您必须遵循的不同请求以及它们的预期响应的详细信息。

于 2015-07-09T20:35:00.783 回答