Autodesk forge Create Bucket 出错是为什么?

从网上找了资料学习了解Autodesk Forge,看到说明可以进行测试,所以在以下网站中进行试验,http://developer-autodesk.git...

需要注册APP,获取Token等操作,我进行到第4步,就出现了错误,在Result框总是提示:
ERROR!
STATUS: 401
STATUS TEXT: Unauthorized
RESPONSE TEXT: The token has expired or is invalid

Token是通过下载了windows 版本的CURL获取的。

请问是什么原因?

补充:Token是获取成功的,返回了非常长的一串字符。

阅读 3.9k
3 个回答

您好~ 请您确认你的 Token Scope 有无包含 bucket:create,如果没有就有可能发生这个问题。这是我所使用的 curl 代码,您可以试试:

curl -X POST \
  https://developer.api.autodesk.com/authentication/v1/authenticate \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/x-www-form-urlencoded' \
  -d 'client_id=<YOUR_CLIENT_ID>&client_secret=<YOUR_CLIENT_SECRET>&grant_type=client_credentials&scope=data%3Aread%20data%3Awrite%20bucket%3Acreate%20bucket%3Aread'

==== 更新 ====
请不要把您的机敏资料(Client Secret)贴上来,也请您确认你的 token 是 "access_token" 后面那一个自串,也就是

eyJhbGciOiJIUzI1NiIsImtpZCI6Imp3dF9zeW1tZXRyaWNfa2V5In0.eyJjbGl
lbnRfaWQiOiJBeTNVUEdCWVdtaTZGRU5xOTdLV3BuQXdzMFk4WjJPRiIsImV4cCI6MTUwNjQwNjMwOSw
ic2NvcGUiOlsiZGF0YTpyZWFkIiwiZGF0YTp3cml0ZSIsImJ1Y2tldDpjcmVhdGUiXSwiYXVkIjoiaHR
0cHM6Ly9hdXRvZGVzay5jb20vYXVkL2p3dGV4cDYwIiwianRpIjoiTzhxMmRrRDR0dUI1ZVFVaUpGcUh
1VGVmTXZKOWZ0Z2dhTHdBdnhnSklQMHZwU1NRT09pMHdWWGswbVZhS0xFViJ9.vZTQGsP7TQd8Jrv96t
iz382NxKkQb3wi7wDiqIo30b8

另外,我建议您产生新的 Client Secret,因为你原先的已经暴露在网上了。重新产生Client Secret的方法:

  1. 进入 Forge 的开发者站点 https://developer.autodesk.co...
  2. 找到您暴露 client secret 的那一个 app
  3. 鼠标点击图上的这个按钮产生新的 Client Secret

图片描述

我在windows系统下运行的CURL,按您的方法测试,也返回了Token,但在http://developer-autodesk.git...上,第4步获得Bucket,仍然是出错,提示:RESPONSE TEXT: The token has expired or is invalid

我执行的命令如下:
curl -X POST "https://developer.api.autodesk.com/authentication/v1/authenticate" -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=<My Client ID>&client_secret=<My Secret>&grant_type=client_credentials&scope=data%3Aread%20data%3Awrite%20bucket%3Acreate"

返回信息如下:
{"access_token":"eyJhbGciOiJIUzI1NiIsImtpZCI6Imp3dF9zeW1tZXRyaWNfa2V5In0.eyJjbGl
lbnRfaWQiOiJBeTNVUEdCWVdtaTZGRU5xOTdLV3BuQXdzMFk4WjJPRiIsImV4cCI6MTUwNjQwNjMwOSw
ic2NvcGUiOlsiZGF0YTpyZWFkIiwiZGF0YTp3cml0ZSIsImJ1Y2tldDpjcmVhdGUiXSwiYXVkIjoiaHR
0cHM6Ly9hdXRvZGVzay5jb20vYXVkL2p3dGV4cDYwIiwianRpIjoiTzhxMmRrRDR0dUI1ZVFVaUpGcUh
1VGVmTXZKOWZ0Z2dhTHdBdnhnSklQMHZwU1NRT09pMHdWWGswbVZhS0xFViJ9.vZTQGsP7TQd8Jrv96t
iz382NxKkQb3wi7wDiqIo30b8","token_type":"Bearer","expires_in":3599}

请问是什么原因?


注: 这位朋友把自己的client id和 secret 贴出来了,我把它去掉了。注意,公开场合不要泄露自己的key和secret,这可能会造成无法预料的情况,包括盗用,数据破坏等

别再快速开始那里搞,我也是这样 没成功。我自己写了个ajax,根据文档写的参数

$.ajax({
  type: "post",
  url: 'https://developer.api.autodesk.com/oss/v2/buckets',
  headers: { Authorization: 'Bearer ' + token,'Content-Type':'application/json'},
  data: JSON.stringify ({bucketKey:$('#creatbucket_txt').val(),policyKey:'transient'}),
  beforeSend: function () {
    console.log(token)
  },
  success: function (response) {
    console.log(response)
  },
  error: function (a, b, c) {
    console.log(a, b, c)
  }
})

token自己获取下,再搞个input输入bucket名字,点击创建就成功了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进