Javascript Autodesk Forge API createBucket不工作
我正在尝试使用autodesk forge-api构建一个应用程序。首先,我在Autodesk配置中创建了一个应用程序,以接收进行API调用所需的“ClientID”和“Client Secret” 不知何故,当我尝试使用Javascript Autodesk Forge API createBucket不工作,javascript,autodesk-forge,autodesk,autodesk-model-derivative,autodesk-data-management,Javascript,Autodesk Forge,Autodesk,Autodesk Model Derivative,Autodesk Data Management,我正在尝试使用autodesk forge-api构建一个应用程序。首先,我在Autodesk配置中创建了一个应用程序,以接收进行API调用所需的“ClientID”和“Client Secret” 不知何故,当我尝试使用createBucket-API调用,即documentet时,我得到了一个答案bad request 400,我不知道为什么 以下是我的API调用: let oAuth2TwoLegged = new ForgeSDK.AuthClientTwoLegged(clientId
createBucket
-API调用,即documentet时,我得到了一个答案bad request 400
,我不知道为什么
以下是我的API调用:
let oAuth2TwoLegged = new ForgeSDK.AuthClientTwoLegged(clientId,
clientSecret, [
'data:read',
'data:write',
'bucket:create',
'bucket:read',
'data:write',
'data:read',
'viewables:read'
], autoRefresh);
oAuth2TwoLegged.authenticate().then(function(credentials){
var HubsApi = new ForgeSDK.HubsApi(); //Hubs Client
var BucketsApi = new ForgeSDK.BucketsApi(); //Buckets Client
BucketsApi.createBucket({bucketKey :"Test", policyKey: "transient"},{}, oAuth2TwoLegged, credentials).then((response) => {
console.log(' new BUCKET: ', response)
}).catch((err) => {
console.log('ERROR BLA: ', err)
});
}).catch((err) => {
console.log('oauth error: ', err)
})
有人建议我可能做错什么吗
当我使用不同的呼叫时,例如:
BucketsApi.getBuckets({}, oAuth2TwoLegged, credentials).then(function(response){
console.log('buckets: ', response.body);
}, function(err){
console.error(err);
});
它是有效的
编辑
如果我这样做:
BucketsApi.createBucket(xyda_select_rtl, {'bucketKey' :'xyda_select_rtl',
'policyKey': 'transient'}, oAuth2TwoLegged, credentials).then((response) => {
console.log(' new BUCKET: ', response)
}).catch((err) => {
console.log('ERROR BLA: ', err)
});
我得到的xyda\u选择\u rtl
未定义
当我加上:
var xyda_select_rtl;
调用createBucket时,我发现错误缺少必需的参数“postBuckets”
嗯。。。。是:-/您的bucket密钥似乎重复,或者您的客户端id和客户端机密具有无效字符。请在应用程序中检查这些参数。而Bucket的名称,即Bucket键应该是全局唯一的。如果传递给Post/bucket的名称存在,您也会得到错误。我建议您以这种方式使用命名模式:
Test + { Your Bucket Key }
希望能有所帮助。您需要为您的存储桶指定一个唯一的名称,很抱歉听到这个坏消息。并没有你想的那么糟糕。例如,只需将客户机id添加到bucket名称:
"test-tAp1fqjjtcgqS4CKpCYDjAyNbKW4IVCC"
var bucketKey = "test-" + guid()
或者使用由以下代码生成的随机guid:
function guid() {
var d = new Date().getTime();
var guid = 'xxxx-xxxx-xxxx'.replace(
/[xy]/g,
function (c) {
var r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d / 16);
return (c == 'x' ? r : (r & 0x7 | 0x8)).toString(16);
});
return guid;
}
然后使用它生成一个bucket名称:
"test-tAp1fqjjtcgqS4CKpCYDjAyNbKW4IVCC"
var bucketKey = "test-" + guid()
嗯,这给了我“测试未定义”什么给了你“测试未定义”?全局意味着Forge OSS不允许在服务器端有一个名为“Test”的bucket。如果你在你的应用程序中没有看到这个bucket,它可能是其他开发者的代币。您可以通过Get'/buckets/Test'进行检查,好吗?但那将是非常非常不灵活的,我怎么知道别人怎么称呼他们的水桶呢?检查我上面编辑的问题。你不能做最新的调用,第一个参数是API负载。它应该包含bucketKey和policyKey,即第一个API调用是正确的,但是bucketKey中的值被复制到Forge OSS。您应该更改createBuckey负载中的bucketKey值。