0

autodesk-forge -apiを使用してアプリケーションを構築しようとしています。まず、オートデスの設定でアプリを作成し、API呼び出しを行うために必要な「ClientID」と「Client Secret」を受け取った。Autodesk Forge APIのcreateBucketが機能しない

createBucket -APIコール(ドキュメントセット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); 
}); 

それが動作する...

EDIT

私は次のような場合:

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

Ehhm ....ええ得る: -/

答えて

1

あなたはバケツのユニークな名前を思いつく必要があります。その悪い知らせには申し訳ありません。あなたが思うほど悪いことではありません。例えば、単純にバケット名にあなたの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() 
0

は、あなたのバケツキーが重複していると思われる、またはクライアントIDクライアント秘密に無効な文字が含まれています。あなたのアプリでそれらのパラメータを確認してください。そして、バケツの名前、私は。バケットキーはグローバルに一意でなければなりません。 Post/bucketsに渡した名前が存在する場合は、エラーも発生します。この方法で名前パターンを使用することをお勧めします。

Test + { Your Bucket Key } 

希望すると助かります。

+0

うーんをこれは私に "テストは定義されていません" – Steve

+0

"テストは定義されていませんでした"グローバルな手段であるForge OSSでは、サーバー側に「Test」という名前のバケットがもう1つ存在しません。あなたのアプリでそのバケツが見えなかった場合、それは他の開発者によってトークンになっている可能性があります。 Get '/ buckets/Test'で確認できます。 –

+0

ok?しかし、それは非常に柔軟性に欠けるでしょう、他の人がバケツと呼んでいるものをどのように知ることができますか?上記の私の編集した質問をチェックしてください。 – Steve

関連する問題