门卫认证流程不起作用

时间:2017-06-14 04:14:50

标签: ruby-on-rails ruby oauth doorkeeper

我正在尝试执行https://github.com/doorkeeper-gem/doorkeeper/wiki/Interacting-as-an-OAuth-client-with-Doorkeeper#writing-a-raw-oauth-client所描述的oauth2流程,但是当我得到401时 我尝试检索访问令牌。这就是我正在做的事情

1)点击应用程序上的授权按钮,如enter image description here所示 2)我在下一个屏幕上授权申请,我给了一个chromiumapp.org/?code=eb775dba8811f605c672a0aac8472972eabaae87446ac957e2b71c57b0b10e6e

形式的网址

3)鉴于此代码我执行

curl -XPOST http://localhost:3000/oauth/token -d '{ 
  "client_id": CLIENT_ID,
  "client_secret": CLIENT_SECRET, 
  "redirect_uri": "https://galaiojniedmogfplghkjnmcfnlbpbpg.chromiumapp.org/", 
  "grant_type": "authorization_code", 
  "code": "eb775dba8811f605c672a0aac8472972eabaae87446ac957e2b71c57b0b10e6e" 
}`

然而,这会返回{"error":"invalid_request","error_description":"The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed."}

我缺少流程的某些部分,或者文档中是否有不正确的内容?

1 个答案:

答案 0 :(得分:0)

我已经更新了我上面链接的wiki,但是如果其他人遇到这个问题,根据rfc,令牌请求上的参数必须是urlencoded形式。

curl -XPOST http://localhost:3000/oauth/token
  -F "client_id=CLIENT_ID"
  -F "client_secret=CLIENT_SECRET" 
  -F "redirect_uri=https://galaiojniedmogfplghkjnmcfnlbpbpg.chromiumapp.org/"
  -F "grant_type=authorization_code"
  -F "code=eb775dba8811f605c672a0aac8472972eabaae87446ac957e2b71c57b0b10e6e"