BIM 360 Docs と Forge OAuth のブログ記事でもご案内していますとおり、BIM 360 Docs ストレージへのアクセスには、BIM 360 Docs ユーザの認可を求める 3-legged OAuth を使った Access Token と、スーパーユーザとしてプロジェクト間の横断的なアクセスを可能とする 2-legged OAuth を使った Access Token を、用途や目的に合わせて使い分けることが出来ます。
ただし、意図的に 2-legged OAuth を使った Access Token を使用しなければならないケースもあります。例えば、BIM 360 のすべてのプロジェクトを取得する GET projects endpoint を呼び出す場合、両 Token を使ったレスポンスは次のような結果となります。
<2-legged Token>
<3-legged Token>
同様に、BIM 360 アカウントのすべてのユーザを取得する GET users endpoint の場合、両 Token を使ったレスポンスは次のようになるはずです。
<2-legged Token>
<3-legged Token>
プロジェクトに Item(ファイル)をアップロードして Version 登録(バージョン付け)する Forge アプリ を考える場合、3-legged OAuth を使って BIM 360 Docs ユーザの認可を経て取得した Access Token を使うと、アップロードしたユーザとして、認可を与えたユーザ名がログに表示されることになります。
この時、2-legged Token を使用すると、アップロードユーザが表示されない、言わば、匿名ユーザとしてファイル アップロードした状態になってしまいます。
2-legged Token でアップロード ユーザを明示的にログしたい場合には、Stotage 作成、ファイルアップロード、バージョン付けをおこなう endpoint 呼び出し時に、’x-user-id’ をリクエスト ヘッダーに追加して、前述の GET users endpoint で取得した 'uid' の値を指定してください。
次のコードは、 アップロードした Item に、POST projects/:project_id/items endpoint を使って最初のバージョンを登録する際の例です。
: uri = "https://developer.api.autodesk.com/data/v1/projects/" + PROJECT_ID + "/items"; request.post({ url: uri, headers: { 'content-type': 'application/vnd.api+json', 'x-user-id': '200708030638689', // uid 'authorization': 'Bearer ' + credentials.access_token }, body: JSON.stringify(payload) }, function (error, versionres, body) { var data = JSON.stringify(versionres); if (JSON.parse(data).statusCode === 201) { console.log(" " + STORAGE_ID + "'s version 1 was created"); } else { console.log("Error : " + JSON.stringify(JSON.parse(body).errors)); } }); }, defaultHandleError); });
この方法で、2-legged Token を使用した場合でも、アップロードしたユーザをログすることが出来るようになります。
By Toshiaki Isezaki
コメント
コメントフィードを購読すればディスカッションを追いかけることができます。