Javascript Autodesk Forge API createBucket不工作

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

我正在尝试使用autodesk forge-api构建一个应用程序。首先,我在Autodesk配置中创建了一个应用程序,以接收进行API调用所需的“ClientID”和“Client Secret”

不知何故,当我尝试使用
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值。