Autodesk Platform Services の新しい .NET SDK は、すでに数ヶ月前からベータ版がリリースされています。この公式 SDK に .NET アプリを移行する方法をご紹介しましょう。
パッケージとインストール
SDK は、API 毎に個別の NuGet パッケージに分割されて提供されています。
例えば、
などです。
そこで、”管理” モジュール Autodesk.SDKManager(SDK マネージャー)を同時に用意して、個々の API モジュールすべてに共有機能と設定(認証、レジリエンシー、ログ機能など)を提供しています。
- 本 SDK で利用可能なモジュールは、 https://www.nuget.org/profiles/AutodeskPlatformServices.SDK 参照することが出来ます。
これらの依存関係をプロジェクトに追加する場合は、Visual Studio の NuGetマネージャーUI を使用するか、コマンドラインを使用して、SDK マネージャーと必要な API をインストールするだけです。
dotnet add package Autodesk.SdkManager
dotnet add package Autodesk.Authentication
dotnet add package Autodesk.OSS
dotnet add package Autodesk.ModelDerivative
初期化
各 API モジュールは、対応する APS サービスへのエントリポイントとなる *Client
クラス(AuthenticationClient
や OssClient
など)を公開しています。これらのクラスのコンストラクタは、唯一のパラメータとして SDK マネージャーのインスタンスを要求とします。以下は、コード内でこれらのクライアントを初期化する例です。
using Autodesk.SDKManager;
using Autodesk.Authentication;
using Autodesk.Oss;
using Autodesk.ModelDerivative;
// ...
var sdkManager = SdkManagerBuilder.Create().Build();
var authenticationClient = new AuthenticationClient(sdkManager);
var ossClient = new OssClient(sdkManager);
var modelDerivativeClient = new ModelDerivativeClient(sdkManager);
認証とユーザー情報
2-legged でアクセス トークン を生成するには、次のようにコーディングすることが出来ます。
using Autodesk.Authentication;
using Autodesk.Authentication.Model;
// ...
var scopes = new List<Scopes> { Scopes.DataRead, Scopes.ViewablesRead };
var auth = await authenticationClient.GetTwoLeggedTokenAsync(APS_CLIENT_ID, APS_CLIENT_SECRET, scopes);
Console.WriteLine(auth.AccessToken);
同じく、3-legged トークン を生成、または、リフレッシュトークンを得るには、旧 Forge Node.js SDK と似た次のようなコーディングを使用することが出来ます。
using Autodesk.Authentication;
using Autodesk.Authentication.Model;
// ...
// Generating the authorization URL
var url = authenticationClient.Authorize(APS_CLIENT_ID, ResponseType.Code, APS_CALLBACK_URL, scopes);
Console.WriteLine(url);
// Exchanging temporary code for an access token
var threeLeggedCredentials = await authenticationClient.GetThreeLeggedTokenAsync(APS_CLIENT_ID, APS_CLIENT_SECRET, temporaryCode, APS_CALLBACK_URL);
Console.WriteLine(threeLeggedCredentials.AccessToken);
// Refreshing an access token
var refreshedCredentials = await authenticationClient.GetRefreshTokenAsync(APS_CLIENT_ID, APS_CLIENT_SECRET, threeLeggedCredentials.RefreshToken, scopes);
Console.WriteLine(refreshedCredentials.AccessToken);
最後に、取得済の 3-legged トークンからユーザー情報を抽出する方法を紹介しましょう。
var userInfo = await authenticationClient.GetUserInfoAsync(threeLeggedCredentials.AccessToken);
Console.WriteLine(userInfo.Name);
- 注:Authentication API v2 では、
firstName
フィールドとlastName
フィールドはname
という単一のフィールドに置き換えられています。
便利なメソッド
場合によっては、API クライアントが 2 つ以上の API リクエストを 1 つのメソッド呼び出しにまとめることがあります。例えば、OSS Bucket にファイルをアップロードする場合、アップロード URL を作成し、コンテンツを手動でアップロードし、最後にアップロード完了のリクエストを送信する代わりに
await ossClient.Upload(bucketKey, objectName, sourceToUpload, accessToken, CancellationToken.None);
を呼び出すような場面です。現在、SDK プロジェクトのドキュメントと変更履歴を作成しているので、そこでこれらのオプションを紹介する予定です。
その他のリソース
本 SDK の公式ドキュメントの準備が整う前に、サンプル(プロジェクトの GitHub リポジトリの一部:https://github.com/autodesk-platform-services/aps-sdk-net)や APS チュートリアル(https://tutorials.autodesk.io)をチェックすることで、使用方法の詳細を把握することが出来ます。
※ 本記事は Migrating to the new APS .NET SDK | Autodesk Platform Services から転写・意訳したものです。
By Toshiaki Isezaki
コメント
コメントフィードを購読すればディスカッションを追いかけることができます。