尝试获取box api令牌时凭据无效

时间:2014-01-05 18:34:03

标签: curl oauth box-api

这是我的问题:

我按照您发布的说明进行操作:“使用框提供的client_idclient_secret获取2个快速步骤中的框访问权限”

第1步:获取auth_code

我在firefox中复制并粘贴以下请求:

https://www.box.com/api/oauth2/authorize?response_type=code&client_id=MY_CLIENT_ID&state=authenticated

step2:使用curl:

使用step1中的代码获取访问权限并刷新令牌
curl -v -k https://www.box.com/api/oauth2/token -d 'grant_type=authorization_code&code={auth_code}&client_id={MY_CLIENT_ID}&client_secret={MY_CLIENT_SECRET}' -X POST

我得到的回应是“无效的客户凭证”。我错过了什么? 在此先感谢您的帮助。我真的不知道如何解决这个错误。

3 个答案:

答案 0 :(得分:0)

更有可能的是,你留下的东西导致卷曲请求只占用第一行,而忽略了“-d ...”及更远。如果你太慢,你实际上会得到这个错误:

{“error”:“invalid_grant”,“error_description”:“授权代码已过期”}

再次在一行上写下卷曲请求或尝试复制并粘贴它:

curl https://www.box.com/api/oauth2/token -d'grant_type = authorization_code& code = {CODE}& client_id = {CLIENT_ID}& client_secret = {CLIENT_SECRET}' -X POST

答案 1 :(得分:0)

我有同样的问题,在添加标题后它对我有用: 内容类型:application / x-www-form-urlencoded

所以你的curl命令看起来像

curl -v -k https://www.box.com/api/oauth2/token -d'grant_type = authorization_code& code = {auth_code}& client_id = {MY_CLIENT_ID}& client_secret = {MY_CLIENT_SECRET}'-H“Content-Type:application / x -www-form-urlencoded“-X POST

答案 2 :(得分:0)

我会回答我自己的问题,以防其他一些新人陷入与我相同的陷阱:

   只需删除大括号({}),以便请求为:

curl -v https://www.box.com/api/oauth2/token -d 'grant_type=authorization_code&code=AUTH_CODE&client_id=CLIENT_ID&client_secret=CLIENT_SECRET' -X POST

并将AUTH_CODECLIENT_IDCLIENT_SECRET替换为相应的值,而无需添加任何"装饰"角色,至少如果你使用卷曲。

请注意,在将cacert.pem文件的路径添加为SSL_CERT_FILE环境变量后,我也删除了-k选项,以便curl找到它并停止抱怨。