专栏的oauth2:无效grant_type参数或参数丢失(Box oauth2: Invalid

2019-08-17 09:24发布

我不知道我做错了,但每次我试图获得令牌(当然用户身份验证后),结果总是无效grant_type参数或参数丢失

可能与盒API总是返回上获得访问令牌无效grant_type参数

这里是我的提琴手的结果:

POST https://api.box.com/oauth2/token HTTP/1.1
Host: api.box.com
Content-Length: 157
Expect: 100-continue
Connection: Keep-Alive

grant_type=authorization_code&code=nnqtYcoik7cjtHQYyn3Af8uk4LG3rYYh&client_id=[myclientId]&client_secret=[mysecret]

结果:

HTTP/1.1 400 Bad Request
Server: nginx
Date: Thu, 07 Mar 2013 11:18:36 GMT
Content-Type: application/json
Connection: keep-alive
Set-Cookie: box_visitor_id=5138778bf12a01.27393131; expires=Fri, 07-Mar-2014 11:18:35 GMT; path=/; domain=.box.com
Set-Cookie: country_code=US; expires=Mon, 06-May-2013 11:18:36 GMT; path=/
Cache-Control: no-store
Content-Length: 99

{"error":"invalid_request","error_description":"Invalid grant_type parameter or parameter missing"}

即使下面卷曲的例子给出了同样的错误。 任何帮助,将不胜感激。

编辑:额外REDIRECT_URI PARAMS尝试,但仍是同样的错误

POST https://api.box.com/oauth2/token HTTP/1.1
Content-Type: application/json; charset=UTF-8
Host: api.box.com
Content-Length: 187
Expect: 100-continue
Connection: Keep-Alive

grant_type=authorization_code&code=R3JxS7UPm8Gjc0y7YLj9qxifdzBYzLOZ&client_id=*****&client_secret=*****&redirect_uri=http://localhost

结果:

HTTP/1.1 400 Bad Request
Server: nginx
Date: Sat, 09 Mar 2013 00:46:38 GMT
Content-Type: application/json
Connection: keep-alive
Set-Cookie: box_visitor_id=513a866ec5cfe0.48604831; expires=Sun, 09-Mar-2014 00:46:38 GMT; path=/; domain=.box.com
Set-Cookie: country_code=US; expires=Wed, 08-May-2013 00:46:38 GMT; path=/
Cache-Control: no-store
Content-Length: 99

{"error":"invalid_request","error_description":"Invalid grant_type parameter or parameter missing"}

Answer 1:

看起来像盒子需要一个正确Content-Type: application/x-www-form-urlencoded请求头除了正确URL编码的参数。 同样的似乎适用于刷新和撤销请求。

此外,每RFC 6749中, redirect_uri

REQUIRED,如果“REDIRECT_URI”参数被包括在授权请求如4.1.1节所描述的,和它们的值必须相同。



Answer 2:

我正面临着类似的问题。

  • 问题不在于与内容类型。
  • 问题是与代码,你收到的生命周期。

在大多数地方没有提到的一个关键方面是,你会得到重定向代码只持续30秒

为了获得访问令牌和刷新令牌,你必须做出POST请求在30秒以内。

如果你不能做到这一点,你所陈述的错误。 我发现的信息在这里 。

下面的代码为我工作。 请记住,在3​​0秒规则。

import requests

url = 'https://api.box.com/oauth2/token'

data = [
    ('grant_type', 'authorization_code'),
    ('client_id', 'YOUR_CLIENT_ID'),
    ('client_secret', 'YOUR_CLIENT_SECRET'),
    ('code', 'XXXXXX'),
]

response = requests.post(url, data=data)

print(response.content)

希望帮助。



Answer 3:

您缺少重定向URI参数。 尝试:

POST https://api.box.com/oauth2/token HTTP/1.1
Host: api.box.com
Content-Length: 157
Expect: 100-continue
Connection: Keep-Alive

grant_type=authorization_code&code=nnqtYcoik7cjtHQYyn3Af8uk4LG3rYYh&client_id=[myclientId]&client_secret=[mysecret]&redirect_uri=[your-redirect-uri]


Answer 4:

我也面临着同样的问题,实现了OAuth2。 我有添加Content-Type: application/x-www-form-urlencoded 。 当我添加content-type我的问题解决了。

检查并添加有效的content-type



Answer 5:

不知道谁可能需要这个在未来但可以肯定你发送一个POST请求,以获得访问令牌,而不是试图通过使用GET来检索,或者如果你在地址栏中粘贴测试 - 将无法正常工作,你需要发送POST请求。

也代码仅持续30秒。



文章来源: Box oauth2: Invalid grant_type parameter or parameter missing