クライアント資格情報許可
クライアント資格情報許可
サーバー認証を利用し、クライアントIDとクライアントシークレットを使用してアプリケーションのIDを確認する場合は、以下の手順に従います。
前提条件
- Box開発者コンソールでサーバー認証 (クライアント資格情報許可使用) を使用するカスタムアプリケーション
- [構成] タブからアプリケーションのクライアントシークレットを表示およびコピーするために、Boxアカウントで2要素認証が有効になっていること
- Box管理コンソールでアプリケーションが承認されていること
利用方法
APIコールを実行してアクセストークンを取得する際は、リクエスト本文にクライアントIDとクライアントシークレットを含める必要があります。grant_type
をclient_credentials
に設定します。
アプリケーションのサービスアカウントとして認証する場合は、以下のようにします。
box_subject_type
をenterprise
に設定するbox_subject_id
をEnterprise IDに設定する
cURL
curl -i -X POST "https://api.box.com/oauth2/token" \
-H "content-type: application/x-www-form-urlencoded" \
-d "client_id=[CLIENT_ID]" \
-d "client_secret=[CLIENT_SECRET]" \
-d "grant_type=client_credentials" \
-d "box_subject_type=enterprise" \
-d "box_subject_id=[ENTERPRISE_ID]"
Java
BoxCCGAPIConnection api = BoxCCGAPIConnection.applicationServiceAccountConnection(
"client_id",
"client_secret",
"enterprise_id"
);
Python
auth = CCGAuth(
client_id="YOUR_CLIENT_ID",
client_secret="YOUR_CLIENT_SECRET",
enterprise_id="YOUR_ENETRPRISE_ID"
)
.NET
var boxConfig = new BoxConfigBuilder("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET")
.Build();
var boxCCG = new BoxCCGAuth(boxConfig);
Node
const BoxSDK = require('box-node-sdk');
const sdkConfig = {
boxAppSettings: {
clientID: "CLIENT_ID",
clientSecret: "CLIENT_SECRET"
},
enterpriseID: "ENTERPRISE_ID"
}
const sdk = BoxSDK.getPreconfiguredInstance(sdkConfig)
const client = sdk.getAnonymousClient();
iOS
import BoxSDK
let sdk = BoxSDK(clientId: "YOUR CLIENT ID HERE", clientSecret: "YOUR CLIENT SECRET HERE")
sdk.getCCGClientForAccountService(enterpriseId: "YOUR ENTERPRISE ID HERE") { result in
switch result {
case let .success(client):
// Use client to make API calls
case let .failure(error):
// Handle error creating client
}
}
管理者または管理対象ユーザーとして認証する場合は、以下のようにします。
box_subject_type
をuser
に設定するbox_subject_id
をユーザーIDに設定する- Box開発者コンソールで [アプリ + Enterpriseアクセス] および [ユーザーアクセストークンを生成する] を有効にする
cURL
curl -i -X POST "https://api.box.com/oauth2/token" \
-H "content-type: application/x-www-form-urlencoded" \
-d "client_id=[CLIENT_ID]" \
-d "client_secret=[CLIENT_SECRET]" \
-d "grant_type=client_credentials" \
-d "box_subject_type=user" \
-d "box_subject_id=[USER_ID]"
任意のアプリケーションユーザーとして認証する場合は、以下のようにします。
box_subject_type
をuser
に設定するbox_subject_id
をユーザーIDに設定する- Box開発者コンソールで [ユーザーア クセストークンを生成する] を有効にする
cURL
curl -i -X POST "https://api.box.com/oauth2/token" \
-H "content-type: application/x-www-form-urlencoded" \
-d "client_id=[CLIENT_ID]" \
-d "client_secret=[CLIENT_SECRET]" \
-d "grant_type=client_credentials" \
-d "box_subject_type=user" \
-d "box_subject_id=[APPUSER_ID]"
一般的なエラー
Grant credentials are invalid (許可の資格情報が無効です)
認証中に、次のエラーが表示される場合があります。
Grant credentials are invalid [400 Bad Request] invalid_grant - Grant credentials are invalid
このエラーは次のいずれかを示します。
-
渡されたクライアントIDとクライアントシークレットが正しくないか、同じアプリケーションのものではない。
-
選択したアプリケーションアク セスに基づいて
box_subject_id
を使用できない。
- アプリケーションがBox管理コンソールで承認されていない