Ruby on rails 隐性赠款流动是如何运作的?

Ruby on rails 隐性赠款流动是如何运作的?,ruby-on-rails,doorkeeper,alexa-skill,Ruby On Rails,Doorkeeper,Alexa Skill,在这一页上,它提到了对隐性补助金的支持。看起来,authorizations#create是我想要的端点,它确实返回了一个访问令牌,但没有返回所需的其他参数 请求 https://localhost/oauth/authorize?client_id=<client_id>&response_type=token&redirect_uri=urn:ietf:wg:oauth:2.0:oob https://localhost/oauth/authorize?clie

在这一页上,它提到了对隐性补助金的支持。看起来,authorizations#create是我想要的端点,它确实返回了一个访问令牌,但没有返回所需的其他参数

请求

https://localhost/oauth/authorize?client_id=<client_id>&response_type=token&redirect_uri=urn:ietf:wg:oauth:2.0:oob
https://localhost/oauth/authorize?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= 与正文一起:
{“resource_owner_id”:,“scopes”:[],“expires_in_seconds”:7776000,“application”:{“uid”:“}”,创建于:1484857630}
根据规范,我需要的是带有查询参数的重定向:

https://localhost#access_token=<access_token>&token_type=bearer&expires_in=<seconds>&scope=<scope>
https://localhost#access_token=&token_type=bearer&expires_in=&scope=
  • 使用测试重定向值“redirect_uri=urn:ietf:wg:oauth:2.0:oob”是否改变了响应

  • 还注意到了吗?而不是响应查询参数前面的#。我不确定规范是怎么说的,但是AmazonOAuth2客户端需要#符号

  • 如何获得包含的令牌\ u type=承载者


谢谢。

通过查看代码,我可以让我的服务正常工作。因此,我以上问题的答案如下:

urn:ietf:wg:oauth:2.0:称为本机URI。代码中存在分支,在将响应设置为本机URI时会改变响应。使用ngrok在本地机器上创建一个外部可调用的端点,我使用了一个真正的redirect_uri值,Doorkeeper在响应中使用了正确的参数(包括token_type=bearer和#sign)进行响应

注意:只有在修改了Doorkeeper代码以允许重定向包含查询参数的URL之后,我的AmazonAlexa技能才起作用。Amazon的重定向URL的格式为
https://pitangui.amazon.com/spa/skill/account-linking-status.html?vendorId=
,门卫当前不支持该操作,并且会抛出一个关于无效重定向URI的错误