Autodesk Forge API createBucket 不工作
Autodesk Forge API createBucket not working
我正在尝试使用 autodesk-forge
-api 构建应用程序。首先,我在我的 Autodesk 配置中创建了一个应用程序来接收一个 "ClientID" 和一个 "Client Secret",这是进行 API 调用所必需的。
不知何故,当我尝试使用 createBucket
-API 调用时,它是 documentet here 我得到一个答案 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_select_rtl
未定义!?!
当我添加:
var xyda_select_rtl;
我收到错误 Missing the required parameter 'postBuckets' when calling createBucket
嗯....是的:-/
您的bucket key似乎重复了,或者您的client id和client secret包含无效字符。请在您的应用程序中检查这些参数。桶的名称,即桶键应该是全局唯一的。如果您传递给 Post /buckets 的名称存在,您也会收到错误消息。我建议你这样使用命名模式:
Test + { Your Bucket Key }
希望对您有所帮助。
您需要为您的存储桶起一个唯一的名称,对于这个坏消息,我们深表歉意。它并没有你想的那么糟糕。例如,只需将您的 client_id 添加到存储桶名称:
"test-tAp1fqjjtcgqS4CKpCYDjAyNbKW4IVCC"
或者使用代码生成的随机 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;
}
然后用它来生成一个桶名:
var bucketKey = "test-" + guid()
我正在尝试使用 autodesk-forge
-api 构建应用程序。首先,我在我的 Autodesk 配置中创建了一个应用程序来接收一个 "ClientID" 和一个 "Client Secret",这是进行 API 调用所必需的。
不知何故,当我尝试使用 createBucket
-API 调用时,它是 documentet here 我得到一个答案 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_select_rtl
未定义!?!
当我添加:
var xyda_select_rtl;
我收到错误 Missing the required parameter 'postBuckets' when calling createBucket
嗯....是的:-/
您的bucket key似乎重复了,或者您的client id和client secret包含无效字符。请在您的应用程序中检查这些参数。桶的名称,即桶键应该是全局唯一的。如果您传递给 Post /buckets 的名称存在,您也会收到错误消息。我建议你这样使用命名模式:
Test + { Your Bucket Key }
希望对您有所帮助。
您需要为您的存储桶起一个唯一的名称,对于这个坏消息,我们深表歉意。它并没有你想的那么糟糕。例如,只需将您的 client_id 添加到存储桶名称:
"test-tAp1fqjjtcgqS4CKpCYDjAyNbKW4IVCC"
或者使用代码生成的随机 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;
}
然后用它来生成一个桶名:
var bucketKey = "test-" + guid()