Box SDKには、クライアント側OAuth 2.0のサポートが組み込まれています。
このプロセスでは、ユーザーはブラウザでBoxウェブアプリにリダイレクトされます。そこで、ユーザーはログインし、アプリケーションによる自分のデータへのアクセスを承認すると、アプリケーションのredirect_urlに再度リダイレクトされます。この最後の手順では、ユーザーがアクセス可能な場所にあるウェブサーバー上でアプリケーションが実行されている必要があります。
OAuth 2.0フローを完了するには、以下の手順を完了する必要があります。
- Box SDKを構成する
- ユーザーをBoxウェブサイトにリダイレクトする
- ユーザーがアプリケーションにアクセス権限を付与する
- 承認コードをアクセストークンと交換する
このフローが終了すると、アプリケーションには、このユーザーの代わりにAPIコールを実行するために使用できるアクセストークンが用意されます。
OAuth 2.0を介して取得したアクセストークンは、もともとアプリケーションを承認したユーザーに関連付けられています。このトークンを使用して実行されるAPIコールはどれも、このアプリケーションから実行されているように見えるため、ユーザーには、アプリケーションがこのトークンを使用してアクセスしようとするファイルやフォルダへのアクセス権限が必要です。
パラメータ
| パラメータ | 説明 |
|---|
CLIENT_ID | アプリケーションのクライアントIDまたはAPIキー |
CLIENT_SECRET | アプリケーションのクライアントシークレットまたはAPIシークレット |
REDIRECT_URI | ユーザーがアプリケーションを承認した後に送信されるアプリケーションのリダイレクトURL。これは開発者コンソールで構成できます。 |
1. SDKを構成する
最初の手順として、選択したSDKを使用して環境が準備されていることを確認します。
var redirectUrl = "[REDIRECT_URI]";
var config = new BoxConfig("[CLIENT_ID]", "[CLIENT_SECRET]", new Uri(redirectUrl));
var sdk = new BoxClient(config);
ご利用の環境に合わせたSDKのインストールの詳細を確認する
2. ユーザーをリダイレクトする
次に、承認URLにユーザーをリダイレクトします。ほとんどのSDKでは、SDKクライアントの承認URLを取得する方法をサポートしています。
アプリケーション用にリダイレクトURIを複数設定した場合、承認URLには、開発者コンソールで設定したURIのいずれかと一致するredirect_uriパラメータを含める必要があります。このパラメータが指定されていない場合、ユーザーがアプリケーションにアクセス権限を付与すると、redirect_uri_missingエラーが表示され、アプリにリダイレクトされません。
var authorizationUrl = "https://account.box.com/api/oauth2/authorize?client_id=[CLIENT_ID]&response_type=code";
// redirectTo(authorizationUrl);
ユーザーがURLにリダイレクトされる方法は、使用されるアプリケーションフレームワークによって異なります。このトピックの詳細については、ほとんどのフレームワークのドキュメントで説明されています。
承認URLは、以下のように手動でも作成できます。
https://account.box.com/api/oauth2/authorize?client_id=[CLIENT_ID]&redirect_uri=[REDIRECT_URI]&response_type=code
スコープを制限したり追加の状態を渡したりするためにユーザーをリダイレクトするときに、追加のクエリパラメータを渡すことができます。詳細については、リファレンスドキュメントを参照してください。
BoxインスタンスのBox Verified Enterpriseが有効になっている場合、標準的なaccount.box.comというベースURLを使用する際に問題が発生することがあります。account.box.comの代わりにent.box.comを使用してください。
3. ユーザーがアプリケーションにアクセス権限を付与する
ユーザーはBoxウェブアプリにリダイレクトされると、ログインする必要があります。ログイン後、ユーザーにはアプリケーションを承認するための画面が表示されます。
ユーザーがこのリクエストを承認し、ボタンをクリックすると、ブラウザは、開発者コンソールで構成されたとおりにアプリケーションのリダイレクトURLにリダイレクトされます。
4. コードを交換する
ユーザーは、有効期間の短い承認コードを含むクエリパラメータが指定されたアプリケーションのリダイレクトURLにリダイレクトされます。
https://your.domain.com/path?code=1234567
このコードはアクセストークンではなく、有効期間はほんの数秒です。SDKを使用すると、このコードを実際のアクセストークンと交換できます。
var session = await sdk.Auth.AuthenticateAsync("[CODE]");
var client = new BoxClient(config, session);
このフローが終了すると、アプリケーションには、このユーザーの代わりにAPIコールを実行するために使用できるアクセストークンが用意されます。
SDKとOAuth 2.0の使用
各SDKのOAuth 2.0認証の詳細については、以下を参照してください。