Forge SDK を使用した 3-legged OAuth Access Token 取得

Icon representing a key and password, symbolizing security and access control.

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 クイックスタート と同じ方法をとっていきます。 


  1. Forge の開発環境 でご案内した Git Shell コマンドでローカル環境に Forge SDK を組み込みます。GitHub 上の forge-api-nodejs-client リポジトリ(https://github.com/Autodesk-Forge/forge-api-nodejs-client) にアクセスして、クローンに必要な URL をクリップボードにコピーします。
  2. Git Shell(ないしは Node.js command prompt、または、コマンド プロンプト)を起動したら、C:Users<user name>DocumentsGitHub フォルダに移動して、git clone https://github.com/Autodesk-Forge/forge-api-nodejs-client.git と入力してクローン処理を実行します。
  3. forge-api-nodejs-client の実行に必要な Node パッケージ(ミドルウェア)をインストールします。C:Users<user name>DocumentsGitHub フォルダ下に作成された C:Users<user name>DocumentsGitHub フォルダに cd コマンドで移動したら、npm install と入力してインストールします。package.json ファイルの内容が参照されて、Node パッケージのインストールが始まります。
  4. 今回は Web サーバーのルート処理実装するのに express パッケージ を利用します。同様に、npm install express と入力して express パッケージをインストールします。
var express = require("express"); var ForgeSDK = require('./../src/index');
var app = express();

// TODO - insert your CLIENT_ID and CLIENT_SECRETvar 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");
  1. 作成した token.js 内にデベロッパ ポータルで作成したアプリの Client IDClient Secret、また、Callback URL を設定します。5. のコードで青字部分 <Your Client ID><Your Client Secret><Your Callback URL> をそれぞれ置き換えてください。デベロッパ ポータルのアプリの手順は、ブログ記事 Forge API を利用するアプリの登録とキーの取得 でご紹介しています。必要に応じてご参照ください。
    なお、ここではローカル環境を考慮して、アプリの CallBack URL を http://localhost:3000/callback に設定しておく必要があります。
  2. ここまでの手順で設定は完了しました。それでは、テストをしていきます。Git Shell(ないしは Node.js command prompt、または、コマンド プロンプト)上で cd コマンドを使って Samples フォルダに移動したら、node token.js と入力して Web サーバーを起動します。
  3. Web ブラウザを起動したら、URL 欄に localhost:3000 と入力します。
  4. Autodesk ID の入力を求める画面に遷移するはずです。お手持ちの Autodesk ID を入力して [次へ] をクリックします。
  5. 9. で入力した Autodesk ID のパスワードを入力したら、[サインイン] をクリックしてください。
  6. サインインしたユーザに対して、アプリがユーザ ストレージにアクセスしてもよいか認可を求める画面が表示されます。ここでは、[許可] をクリックしてください。なお、ここで一覧表示される権限は、5. で作成したコードの赤字部分で指定した Scope の内容に対応します。
  7. すべてが正しく処理されると Access Token を含んだ JSON レスポンスが返されます。JSON レスポンスは、Node を起動した Git Shell(ないしは Node.js command prompt、または、コマンド プロンプト)上と Web ブラウザ上に表示されるはずです。Web ブラウザでは、URL 欄が更新されて 6. で指定した CallBack URL が Authorization コードをパラメータにして呼び出されている点に注意してください。
JSON object displaying an OAuth callback URL with access and refresh tokens in the web browser's address bar.

上記内容では Refresh Token の取得部分を割愛していますが、 3-legged 認証の具体的なシナリオをブログ記事 Forge での OAuth 認証シナリオ でご案内していますので、前述の内容ともに再度ご確認いただくことをお勧めします。

 By Toshiaki Isezaki

Discover more from Autodesk Developer Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading