在此页面https://github.com/doorkeeper-gem/doorkeeper/wiki/Supported-Features上,它提到了对Implicit Grants的支持。看起来授权#create是我想要的端点,它确实返回access_token但它不返回所需的其他参数。
请求
https://localhost/oauth/authorize?client_id=<client_id>&response_type=token&redirect_uri=urn:ietf:wg:oauth:2.0:oob
我被重定向到:
重定向
https://localhost?access_token=<access_token> with the body:
{"resource_owner_id":<user_id>,"scopes":[],"expires_in_seconds":7776000,"application":{"uid":"<client_id>"},"created_at":1484857630}
根据规范我需要的是带有查询参数的重定向:
https://localhost#access_token=<access_token>&token_type=bearer&expires_in=<seconds>&scope=<scope>
是否使用“redirect_uri = urn:ietf:wg:oauth:2.0:oob”的测试重定向值来更改响应?
还要注意?而不是响应查询参数之前的#。我不确定规范中的内容,但亚马逊OAuth2客户端需要#符号。
如何包含token_type = bearer?
感谢。
答案 0 :(得分:0)
我能够通过查看代码来使我的服务正常工作。所以上面我的问题的答案是:
urn:ietf:wg:oauth:2.0:被称为本机URI。代码中有分支,当设置为本机URI时,它会改变响应。使用ngrok在我的本地机器上创建一个可外部调用的端点,我使用了一个真正的redirect_uri值,并且Doorkeeper在响应中使用了正确的参数(包括token_type = bearer和#符号)。
注意:只有在修改门卫代码以允许包含查询参数的重定向网址后,才能使用我的亚马逊Alexa技能。亚马逊的重定向网址格式为https://pitangui.amazon.com/spa/skill/account-linking-status.html?vendorId=<vendorId>
,门卫当前不支持此格式,并且会针对无效重定向URI引发错误。