隐式拨款流程如何运作?

时间:2017-01-20 16:26:57

标签: ruby-on-rails doorkeeper alexa-skill

在此页面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?

感谢。

1 个答案:

答案 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引发错误。