我已经按照该教程中的步骤将文件上传到我的 a360 集线器没有问题,您是否尝试过仅通过 Rest 调用或 cURL 调用来确保过程正确?我可以告诉你我使用 cURL 的步骤,这样你就可以尝试并告诉我。
注意:使用 cURL 时,我使用 JQ 处理器以更有条理的方式可视化终端中的响应。 https://stedolan.github.io/jq/
三足身份验证
步骤 0.1:将用户引导至授权 Web 流程,设置正确的范围
https://developer.api.autodesk.com/authentication/v1/authorize?response_type=code&client_id=xxxxxxxxxx&redirect_uri=http%3A%2F%2Fxxxxx.com%2Foauth%2Fcallback&scope=data:read数据:写桶:创建桶:读数据:创建
步骤 0.2:实现提取授权码的代码
代码 = xxxxxxxxxxxxx-xxxxx-xxxxxxxxx
步骤 0.3:将授权码交换为访问令牌
curl -v 'https://developer.api.autodesk.com/authentication/v1/gettoken' -X 'POST' -H 'Content-Type: application/x-www-form-urlencoded' -d 'client_id=xxxxxxxxxxxxx&client_secret=xxxxxxxxxxxxxxx&grant_type=authorization_code&code=xxxxxxxxx-xxxxxxx&redirect_uri=http://xxxxxx.com/oauth/callback' | jq '.'
回应
{
"access_token": "OC5yVHwVyjZRfxQhXJxxxxxxxxx",
"refresh_token": "o3pKZaUvEsIozWwdyldoHGmLjxxxxxxxxxxx",
"token_type": "承载者",
“expires_in”:86399
}
现在我们有了 3 条腿令牌,让我们开始将文件上传到 A360 Hub 的步骤
第 1 步:找到拥有您的资源的中心
curl -X GET -H "Authorization: Bearer xxxxxxxxxxxxxx" "https://developer.api.autodesk.com/project/v1/hubs" | jq '.'
响应将是:
{
“jsonapi”:{
“版本”:“1.0”},“链接”:{
“自己”: {
"href": "https://developer.api.autodesk.com/project/v1/hubs"
} }, “数据”: [
{
“类型”:“集线器”,
"id": "a.cGVyc29uYWw6dWxxxxxxxxxxx", // 记下这个 ID
“属性”: {
“名称”:“欧特克”,
“延期”: {
“类型”:“集线器:autodesk.core:集线器”,
“版本”:“1.0”,
“模式”:{
"href": "https://developer.api.autodesk.com/schema/v1/versions/hubs%3Aautodesk.core%3AHub-1.0"
},
“数据”: {}
}
},
“链接”:{
“自己”: {
"href": "https://developer.api.autodesk.com/project/v1/hubs/a.YnVzaW5lc3M6YXV0xxxxxxxxxx"
}
},
“关系”:{
“项目”:{
“链接”:{
“有关的”: {
"href": "https://developer.api.autodesk.com/project/v1/hubs/a.YnVzaW5lc3M6YXV0b2Rlc2sxNDU/projects"
}
}
}
}
}
第 2 步:找到拥有您的资源的项目
curl -X GET -H "Authorization: Bearer OC5yVHwVyxxxxxxxxxxxx" "https://developer.api.autodesk.com/project/v1/hubs/a.cGVyc29uYWw6dWxxxxxxxxxxx/projects" | jq '.'
回应
{ “jsonapi”:{
“版本”:“1.0”},“链接”:{
“自己”: {
"href": "https://developer.api.autodesk.com/project/v1/hubs/a.cGVyc29uYWw6dWxxxxxxxxxxx/projects"
} }, “数据”: [
{
“类型”:“项目”,
"id": "a.cGVyc29uYWw6dxxxxxxxxxxxxxxxxxQwNjEwMTQ3NDA1MQ",
“属性”: {
"name": "要共享的设计文件",
“延期”: {
“类型”:“项目:autodesk.core:项目”,
“版本”:“1.0”,
“模式”:{
"href": "https://developer.api.autodesk.com/schema/v1/versions/projects%3Aautodesk.core%3AProject-1.0"
},
“数据”: {}
}
},
“链接”:{
“自己”: {
"href": "https://developer.api.autodesk.com/project/v1/hubs/a.cGVyc29uYWw6dWxxxxxxxxxxx/projects/a.cGVyc29uYWw6dxxxxxxxxxxxxxxxxxQwNjEwMTQ3NDA1MQ"
}
},
“关系”:{
“中心”: {
“数据”: {
“类型”:“集线器”,
“id”:“a.cGVyc29uYWw6dWxxxxxxxxxxx”
},
“链接”:{
“有关的”: {
"href": "https://developer.api.autodesk.com/project/v1/hubs/a.cGVyc29uYWw6dWxxxxxxxxxxx"
}
}
},
“根文件夹”: {
“数据”: {
“类型”:“文件夹”,
"id": "urn:adsk.wipprod:fs.folder:co.BKklEuaHRsiii-mKNxxxxxx"
},
“元”:{
“关联”: {
"href": "https://developer.api.autodesk.com/data/v1/projects/a.cGVyc29uYWw6dxxxxxxxxxxxxxxxxxQwNjEwMTQ3NDA1MQ/folders/urn%3Aadsk.wipprod%3Afs.folder%3Aco.BKklEuaHRsiii-mKNxxxxxx"
}
}
},
“顶级文件夹”:{
“链接”:{
“有关的”: {
"href": "https://developer.api.autodesk.com/project/v1/hubs/a.cGVyc29uYWw6dWxxxxxxxxxxx/projects/a.cGVyc29uYWw6dxxxxxxxxxxxxxxxxxQwNjEwMTQ3NDA1MQ/topFolders"
}
}
}
}
}
//第三步:创建存储位置
curl -X POST -H "Content-Type: application/vnd.api+json" -H "Accept: application/vnd.api+json" -H "Authorization: Bearer OC5yVHwVyjZRfxxxxxxxxx" -d '{
"jsonapi": { "version": "1.0" },
"data": {
"type": "objects",
"attributes": {
"name": "lego-racecar.3dm"
},
"relationships": {
"target": {
"data": { "type": "folders", "id": "urn:adsk.wipprod:fs.folder:co.BKklEuaHRsiii-mKNxxxxxx" }
}
}
}
}' "https://developer.api.autodesk.com/data/v1/projects/a.cGVyc29uYWw6dxxxxxxxxxxxxxxxxxQwNjEwMTQ3NDA1MQ/storage" | jq '.'
调用的响应
{ “jsonapi”:{
“版本”:“1.0”},“数据”:{
“类型”:“对象”,
"id": "urn:adsk.objects:os.object:wip.dm.prod/6d106e5b-2ac6-41d5-aa1c-b08694xxxxxx.3dm",
“关系”:{
“目标”: {
“数据”: {
“类型”:“文件夹”,
"id": "urn:adsk.wipprod:fs.folder:co.BKklEuaHRsiii-mKNxxxxxx"
},
“链接”:{
“有关的”: {
"href": "https://developer.api.autodesk.com/data/v1/projects/a.cGVyc29uYWw6dxxxxxxxxxxxxxxxxxQwNjEwMTQ3NDA1MQ/folders/urn%3Aadsk.wipprod%3Afs.folder%3Aco.BKklEuaHRsiii-mKNxxxxxx"
}
}
}
} } }
第 4 步:将文件上传到存储位置
curl -X PUT -H "Authorization: Bearer OC5yVHwVyjZRfxQhXJjxxxxxxx" --data-binary @lego-racecar.3dm "https://developer.api.autodesk.com/oss/v2/buckets/wip.dm.prod/objects/6d106e5b-2ac6-41d5-aa1c-b08694xxxxxx.3dm" | jq '.'
回应
{ "bucketKey": "wip.dm.prod", "objectId":
“骨灰盒:adsk.objects:os.object:wip.dm.prod/6d106e5b-2ac6-41d5-aa1c-b08694xxxxxx.3dm”,
“objectKey”:“6d106e5b-2ac6-41d5-aa1c-b08694xxxxxx.3dm”,“sha1”:
"9c8e51403adc6b3bb6f586433bca66689xxxxxx", "尺寸": 107743049,
“contentType”:“应用程序/x-www-form-urlencoded”,“位置”:
“https://developer.api.autodesk.com/oss/v2/buckets/wip.dm.prod/objects/6d106e5b-2ac6-41d5-aa1c-b08694xxxxxx.3dm”
}
最后是第 5 步:创建上传文件的第一个版本
curl -X POST -H "Authorization: Bearer OC5yVHwVyjZRfxQhXJjxxxxxxxx" -H "Content-Type: application/vnd.api+json" -H "Accept: application/vnd.api+json" -d '{
"jsonapi": { "version": "1.0" },
"data": {
"type": "items",
"attributes": {
"displayName": "lego-racecar.3dm",
"extension": {
"type": "items:autodesk.core:File",
"version": "1.0"
}
},
"relationships": {
"tip": {
"data": {
"type": "versions", "id": "1"
}
},
"parent": {
"data": {
"type": "folders",
"id": "urn:adsk.wipprod:fs.folder:co.BKklEuaHRsiii-mKNxxxxxx"
}
}
}
},
"included": [
{
"type": "versions",
"id": "1",
"attributes": {
"name": "lego-racecar.3dm",
"extension": {
"type": "versions:autodesk.core:File",
"version": "1.0"
}
},
"relationships": {
"storage": {
"data": {
"type": "objects",
"id": "urn:adsk.objects:os.object:wip.dm.prod/6d106e5b-2ac6-41d5-aa1c-b08694xxxxxx.3dm"
}
}
}
}
]
}' "https://developer.api.autodesk.com/data/v1/projects/a.cGVyc29uYWw6dxxxxxxxxxxxxxxxxxQwNjEwMTQ3NDA1MQ/items" | jq '.'
回应
{ “jsonapi”:{
“版本”:“1.0”},“链接”:{
“自己”: {
"href": "https://developer.api.autodesk.com/data/v1/projects/a.cGVyc29uYWw6dWUyOTg4MTEzMSMyMDE2MDYxNTM1MDA2NjA2/items/urn%3Aadsk.wipprod%3Adm.lineage%3ABlMbtGTyQ2eMLvZ05rVvAg"
} }, “数据”: {
“类型”:“项目”,
"id": "urn:adsk.wipprod:dm.lineage:BlMbtGTyQ2eMLvZ05rVvAg",
“属性”: {
"displayName": "lego-racecar.3dm",
"createTime": "2016-11-02T18:49:51+00:00",
"createUserId": "TNSUM9VPW79S",
"lastModifiedTime": "2016-11-02T18:49:51+00:00",
"lastModifiedUserId": "TNSUM9VPW79S",
“延期”: {
“类型”:“项目:autodesk.core:文件”,
“版本”:“1.0”,
“模式”:{
"href": "https://developer.api.autodesk.com/schema/v1/versions/items%3Aautodesk.core%3AFile-1.0"
},
“数据”: {}
}
},
“链接”:{
“自己”: {
"href": "https://developer.api.autodesk.com/data/v1/projects/a.cGVyc29uYWw6dWUyOTg4MTEzMSMyMDE2MDYxNTM1MDA2NjA2/items/urn%3Aadsk.wipprod%3Adm.lineage%3ABlMbtGTyQ2eMLvZ05rVvAg"
}
},
“关系”:{
“提示”: {
“数据”: {
“类型”:“版本”,
"id": "urn:adsk.wipprod:fs.file:vf.BlMbtGTyQ2eMLvZ05rVvAg?version=1"
},
“链接”:{
“有关的”: {
"href": "https://developer.api.autodesk.com/data/v1/projects/a.cGVyc29uYWw6dWUyOTg4MTEzMSMyMDE2MDYxNTM1MDA2NjA2/items/urn%3Aadsk.wipprod%3Adm.lineage%3ABlMbtGTyQ2eMLvZ05rVvAg/tip"
}
}
},
“版本”:{
“链接”:{
“有关的”: {
"href": "https://developer.api.autodesk.com/data/v1/projects/a.cGVyc29uYWw6dWUyOTg4MTEzMSMyMDE2MDYxNTM1MDA2NjA2/items/urn%3Aadsk.wipprod%3Adm.lineage%3ABlMbtGTyQ2eMLvZ05rVvAg/versions"
}
}
},
“父母”:{
“数据”: {
“类型”:“文件夹”,
"id": "urn:adsk.wipprod:fs.folder:co.YgCsk6CGSUSTFeexhncYNw"
},
“链接”:{
“有关的”: {
"href": "https://developer.api.autodesk.com/data/v1/projects/a.cGVyc29uYWw6dWUyOTg4MTEzMSMyMDE2MDYxNTM1MDA2NjA2/items/urn%3Aadsk.wipprod%3Adm.lineage%3ABlMbtGTyQ2eMLvZ05rVvAg/parent"
}
}
},
“参考”:{
“链接”:{
“自己”: {
"href": "https://developer.api.autodesk.com/data/v1/projects/a.cGVyc29uYWw6dWUyOTg4MTEzMSMyMDE2MDYxNTM1MDA2NjA2/items/urn%3Aadsk.wipprod%3Adm.lineage%3ABlMbtGTyQ2eMLvZ05rVvAg/relationships/refs"
},
“有关的”: {
"href": "https://developer.api.autodesk.com/data/v1/projects/a.cGVyc29uYWw6dWUyOTg4MTEzMSMyMDE2MDYxNTM1MDA2NjA2/items/urn%3Aadsk.wipprod%3Adm.lineage%3ABlMbtGTyQ2eMLvZ05rVvAg/refs"
}
}
},
“链接”:{
“链接”:{
“自己”: {
"href": "https://developer.api.autodesk.com/data/v1/projects/a.cGVyc29uYWw6dWUyOTg4MTEzMSMyMDE2MDYxNTM1MDA2NjA2/items/urn%3Aadsk.wipprod%3Adm.lineage%3ABlMbtGTyQ2eMLvZ05rVvAg/relationships/links"
}
}
}
} }, “包括”: [
{
“类型”:“版本”,
"id": "urn:adsk.wipprod:fs.file:vf.BlMbtGTyQ2eMLvZ0xxxxxx?version=1",
“属性”: {
“名称”:“乐高赛车.3dm”,
"displayName": "lego-racecar.3dm",
"createTime": "2016-11-02T18:49:51+00:00",
"createUserId": "TNSUM9VPxxxxxx",
"lastModifiedTime": "2016-11-02T18:49:51+00:00",
"lastModifiedUserId": "TNSUM9VPxxxxxx",
“版本号”:1,
"mimeType": "application/vnd.autodesk.rhinoceros",
“存储大小”:107743049,
“文件类型”:“3dm”,
“延期”: {
“类型”:“版本:autodesk.core:文件”,
“版本”:“1.0”,
“模式”:{
"href": "https://developer.api.autodesk.com/schema/v1/versions/versions%3Aautodesk.core%3AFile-1.0"
},
“数据”: {}
}
},
“链接”:{
“自己”: {
"href": "https://developer.api.autodesk.com/data/v1/projects/a.cGVyc29uYWw6dxxxxxxxxxxxxxxxxxQwNjEwMTQ3NDA1MQ/versions/urn%3Aadsk.wipprod%3Afs.file%3Avf.BlMbtGTyQ2eMLvZ05rVvAg%3Fversion%3D1"
}
},
“关系”:{
“物品”: {
“数据”: {
“类型”:“项目”,
"id": "urn:adsk.wipprod:dm.lineage:BlMbtGTyQ2eMLvZ0xxxxxxx"
},
“链接”:{
“有关的”: {
"href": "https://developer.api.autodesk.com/data/v1/projects/a.cGVyc29uYWw6dxxxxxxxxxxxxxxxxxQwNjEwMTQ3NDA1MQ/versions/urn%3Aadsk.wipprod%3Afs.file%3Avf.BlMbtGTyQ2eMLvZ05rVvAg%3Fversion%3D1/item"
}
}
},
“链接”:{
“链接”:{
“自己”: {
"href": "https://developer.api.autodesk.com/data/v1/projects/a.cGVyc29uYWw6dxxxxxxxxxxxxxxxxxQwNjEwMTQ3NDA1MQ/versions/urn%3Aadsk.wipprod%3Afs.file%3Avf.BlMbtGTyQ2eMLvZ05rVvAg%3Fversion%3D1/relationships/links"
}
}
},
“参考”:{
“链接”:{
“自己”: {
"href": "https://developer.api.autodesk.com/data/v1/projects/a.cGVyc29uYWw6dxxxxxxxxxxxxxxxxxQwNjEwMTQ3NDA1MQ/versions/urn%3Aadsk.wipprod%3Afs.file%3Avf.BlMbtGTyQ2eMLvZ05rVvAg%3Fversion%3D1/relationships/refs"
},
“有关的”: {
"href": "https://developer.api.autodesk.com/data/v1/projects/a.cGVyc29uYWw6dxxxxxxxxxxxxxxxxxQwNjEwMTQ3NDA1MQ/versions/urn%3Aadsk.wipprod%3Afs.file%3Avf.BlMbtGTyQ2eMLvZ05rVvAg%3Fversion%3D1/refs"
}
}
},
“下载格式”:{
“链接”:{
“有关的”: {
"href": "https://developer.api.autodesk.com/data/v1/projects/a.cGVyc29uYWw6dxxxxxxxxxxxxxxxxxQwNjEwMTQ3NDA1MQ/versions/urn%3Aadsk.wipprod%3Afs.file%3Avf.BlMbtGTyQ2eMLvZ05rVvAg%3Fversion%3D1/downloadFormats"
}
}
},
“衍生物”:{
“数据”: {
“类型”:“衍生物”,
“id”:“dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLkJsTWJ0R1R5UTJlTUx2WjA1clZ2QWc_dmVxxxxxxxxx”
},
“元”:{
“关联”: {
"href": "https://developer.api.autodesk.com/modelderivative/v2/designdata/dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLkJsTWJ0R1R5UTJlTUx2WjA1clZ2QWc_dmVxxxxxxxx/manifest"
}
}
},
“缩略图”:{
“数据”: {
“类型”:“缩略图”,
“id”:“dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLkJsTWJ0R1R5UTJlTUx2WjA1clZ2QWc_dmVxxxxxxxxx”
},
“元”:{
“关联”: {
"href": "https://developer.api.autodesk.com/modelderivative/v2/designdata/dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLkJsTWJ0R1R5UTJlTUx2WjA1clZ2QWc_dmVyc2lxxxxx/thumbnail"
}
}
},
“贮存”: {
“数据”: {
“类型”:“对象”,
"id": "urn:adsk.objects:os.object:wip.dm.prod/6d106e5b-2ac6-41d5-aa1c-b086943xxxxx.3dm"
},
“元”:{
“关联”: {
"href": "https://developer.api.autodesk.com/oss/v2/buckets/wip.dm.prod/objects/6d106e5b-2ac6-41d5-aa1c-b086943xxxxx.3dm"
}
}
}
}
} ] }
它可能包含一些信息,但这是我遵循的过程,并且之前已经工作过。您可以像我之前所说的那样尝试它,让 Postman 执行一组 REST 调用,然后再构建您的 ajax 调用。