Forge ポータル の Code Samples 記載されている Forge SDK を利用すると、3-legged OAuth を利用した Access Token を簡単に取得することが出来ます。ここで取得した Access Token を Data Management API の各種 endpoint を利用すれば、オートデスクのクラウド サービスである A360(A360 Personal)、A360 Team、BIM 360 Team、Fusion Team、BIM 360 Docs のユーザ ストレージ領域にアクセスすることが可能になります。
今回は、Forge Platform API のうち、Authentication API(OAuth API)、Data Management API、Model Derivative API、Design Automation API をまとめて 1 つにまとめた Forge SDK である forge-api-nodejs-client を使って、3-legged OAuth で Access Token を取得してみましょう。以前ご案内した Forge Node.js クイックスタート と同じ方法をとっていきます。
- Forge の開発環境 でご案内した Git Shell コマンドでローカル環境に Forge SDK を組み込みます。GitHub 上の forge-api-nodejs-client リポジトリ(https://github.com/Autodesk-Forge/forge-api-nodejs-client) にアクセスして、クローンに必要な URL をクリップボードにコピーします。
- Git Shell(ないしは Node.js command prompt、または、コマンド プロンプト)を起動したら、C:\Users\<user name>\Documents\GitHub フォルダに移動して、git clone https://github.com/Autodesk-Forge/forge-api-nodejs-client.git と入力してクローン処理を実行します。
- forge-api-nodejs-client の実行に必要な Node パッケージ(ミドルウェア)をインストールします。C:\Users\<user name>\Documents\GitHub フォルダ下に作成された C:\Users\<user name>\Documents\GitHub フォルダに cd コマンドで移動したら、npm install と入力してインストールします。package.json ファイルの内容が参照されて、Node パッケージのインストールが始まります。
- 今回は Web サーバーのルート処理実装するのに express パッケージ を利用します。同様に、npm install express と入力して express パッケージをインストールします。
- Adobe Brackets などのテキスト エディタを利用して新規にファイルを作成し、Samples フォルダの下に token.js の名前で保存します。
var express = require("express");
var ForgeSDK = require('./../src/index');
var app = express();
// TODO - insert your CLIENT_ID and CLIENT_SECRET
var CLIENT_ID = '<Your Client ID>',
CLIENT_SECRET = '<Your Client Secret>';
var REDIRECT_URL = '<Your Callback URL>';
/**
* General error handling method
* @param err
*/
function defaultHandleError(err) {
console.error('\x1b[31m Error:', err, '\x1b[0m' ) ;
}
// Initialize the 3-legged oauth2 client
var autoRefresh = false;
var oAuth2ThreeLegged = new ForgeSDK.AuthClientThreeLegged(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL, ['data:write', 'data:read'], autoRefresh);
// default page
app.get('/', function (req, res) {
var url = oAuth2ThreeLegged.generateAuthUrl();
res.redirect(url);
});
// Get 3-legged access token
// callback from Forge Auth page
app.get('/callback', function (req, res) {
var code = req.query.code;
oAuth2ThreeLegged.getToken(code).then(function (credentials) {
console.log("**** Got Credentials",credentials);
res.header({'Content-Type': 'text/html; charset=utf-8'});
res.header({'Access-Control-Allow-Origin': '*'});
res.send(JSON.stringify(credentials));
}, defaultHandleError);
});
app.listen(3000);
console.log("Server is listening port 3000"); - 作成した token.js 内にデベロッパ ポータルで作成したアプリの Client ID と Client Secret、また、Callback URL を設定します。5. のコードで青字部分 <Your Client ID>、<Your Client Secret>、<Your Callback URL> をそれぞれ置き換えてください。デベロッパ ポータルのアプリの手順は、ブログ記事 Forge API を利用するアプリの登録とキーの取得 でご紹介しています。必要に応じてご参照ください。
なお、ここではローカル環境を考慮して、アプリの CallBack URL を http://localhost:3000/callback に設定しておく必要があります。 - ここまでの手順で設定は完了しました。それでは、テストをしていきます。Git Shell(ないしは Node.js command prompt、または、コマンド プロンプト)上で cd コマンドを使って Samples フォルダに移動したら、node token.js と入力して Web サーバーを起動します。
- Web ブラウザを起動したら、URL 欄に localhost:3000 と入力します。
- Autodesk ID の入力を求める画面に遷移するはずです。お手持ちの Autodesk ID を入力して [次へ] をクリックします。
- 9. で入力した Autodesk ID のパスワードを入力したら、[サインイン] をクリックしてください。
- サインインしたユーザに対して、アプリがユーザ ストレージにアクセスしてもよいか認可を求める画面が表示されます。ここでは、[許可] をクリックしてください。なお、ここで一覧表示される権限は、5. で作成したコードの赤字部分で指定した Scope の内容に対応します。
- すべてが正しく処理されると Access Token を含んだ JSON レスポンスが返されます。JSON レスポンスは、Node を起動した Git Shell(ないしは Node.js command prompt、または、コマンド プロンプト)上と Web ブラウザ上に表示されるはずです。Web ブラウザでは、URL 欄が更新されて 6. で指定した CallBack URL が Authorization コードをパラメータにして呼び出されている点に注意してください。
上記内容では Refresh Token の取得部分を割愛していますが、 3-legged 認証の具体的なシナリオをブログ記事 Forge での OAuth 認証シナリオ でご案内していますので、前述の内容ともに再度ご確認いただくことをお勧めします。
By Toshiaki Isezaki
コメント
コメントフィードを購読すればディスカッションを追いかけることができます。