簡體   English   中英

Autodesk Forge API createBucket無法正常工作

[英]Autodesk Forge API createBucket not working

我正在嘗試通過使用autodesk-forge forge -api來構建應用程序。 首先,我在Autodesk配置中創建了一個應用程序,以接收進行API調用所需的“ ClientID”和“ Client Secret”。

不知何故,當我嘗試使用createBucket調用(此處是文檔集)時我收到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出現錯誤, Missing the required parameter 'postBuckets' when calling createBucket

嗯...是的-//

您需要為您的存儲桶命名一個唯一的名稱,對於這個壞消息深表歉意。 您認為還不錯。 例如,只需將您的client_id添加到存儲桶名稱中:

"test-tAp1fqjjtcgqS4CKpCYDjAyNbKW4IVCC"

或使用由代碼生成的隨機引導:

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()

您的存儲桶密鑰似乎重復,或者您的客戶ID和客戶機密包含無效字符。 請在您的應用中檢查這些參數。 桶的名稱,即桶密鑰應該是全局唯一的。 如果傳遞給Post / buckets的名稱存在,您也會收到錯誤消息。 我建議您以這種方式使用命名模式:

Test + { Your Bucket Key }

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM