> ## Documentation Index
> Fetch the complete documentation index at: https://developer.box.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Experience Cloud Toolkitのグローバルメソッド

> `ExperienceCloudToolkit`クラスは、Box App UserをSalesforce Experience Cloud環境内で管理するためのグローバルメソッドを提供します。

`ExperienceCloudToolkit`クラスは、Box App UserをSalesforce Experience Cloud環境内で管理するためのグローバルメソッドを提供します。これらのメソッドでは、Salesforceユーザーに関連付けられたBox App Userの作成、非アクティブ化、検索をサポートしています。

## メソッド

### `createAppUserforCurrentUser()`

現在ログインしているSalesforceユーザーのBox App Userを作成します。

シグネチャ: `Global static BoxUser.Info createAppUserforCurrentUser()`

戻り値:

* `BoxUser.Info`。作成されたBox App User、または既存のBox App Userについての情報です。

説明: 現在のユーザーのIDを使用して`createAppUserforUser()`を呼び出すことができる便利なメソッドです。現在のユーザーにアクティブなApp Userがすでに存在する場合は、既存のApp Userの情報が返されます。

例:

```
BoxUser.Info appUser = ExperienceCloudToolkit.createAppUserforCurrentUser();
System.debug('Box User ID: ' + appUser.boxId);
```

### `createAppUserforUser(String userId)`

特定のSalesforceユーザーのBox App Userを作成または再アクティブ化します。

シグネチャ: `Global static BoxUser.Info createAppUserforUser(String userId)`

パラメータ:

| **名前** | **型** | **説明** |
| - | - | - |
| `userId` | `String` | Box App Userの作成対象となるSalesforceユーザーのID。 |

戻り値:

* `BoxUser.Info`。作成されたBox App User、または既存のBox App Userについての情報です。

説明: プラットフォームアクセス専用のBox App Userを、指定されたSalesforceユーザーIDに関連付けます。ロジックは次のとおりです。

1. このメソッドが、`external_app_user_id`とSalesforce `userId`が一致する既存のBox App Userを検索します。

2. アクティブなユーザーが見つかった場合は、そのユーザーの情報を返します。

3. アクティブでないユーザーが見つかった場合は、そのユーザーを再アクティブ化し、そのユーザーの情報を返します。

4. ユーザーが見つからなかった場合は、以下のプロパティを使用して新しいApp Userを作成します。
   * `name`: Salesforceユーザーの名前

   * `external_app_user_id`: Salesforceの`userId`

   * `is_platform_access_only`: `true`

   * `status`: `active`

例:

```
String salesforceUserId = '005xx000001SvWlAAK';
BoxUser.Info appUser = ExperienceCloudToolkit.createAppUserforUser(salesforceUserId);
System.debug('Created Box App User: ' + appUser.name);
```

### `deactivateCurrentUserAccount()`

現在のSalesforceユーザーのBox App Userアカウントを非アクティブ化します。

シグネチャ: `Global static Boolean deactivateCurrentUserAccount()`

戻り値:

* `Boolean`。非アクティブ化が成功した場合は`true`、成功しなかった場合は`false`です。

説明: 現在のユーザーのIDを使用して`deactivateUserAccount()`を呼び出し、Box App Userのステータスを`inactive`に設定することができる、便利なメソッドです。

例:

```
Boolean success = ExperienceCloudToolkit.deactivateCurrentUserAccount();
if (success) { 
   System.debug('Account deactivated successfully.');
}
```

### `deactivateUserAccount(String boxUserId)`

特定のBox App Userアカウントを非アクティブ化します。

シグネチャ: `Global static Boolean deactivateUserAccount(String boxUserId)`

パラメータ:

| **名前** | **型** | **説明** |
| - | - | - |
| `boxUserId` | `String` | 非アクティブ化するBoxユーザーID。 |

戻り値:

* `Boolean`。非アクティブ化が成功 (HTTP 200 OK) の場合は`true`、そうでない場合は`false`です。

説明: リクエストをBox APIに送信して、ユーザーのステータスを`inactive`に更新します。これにより、ユーザーはBoxコンテンツにアクセスできなくなりますが、アカウント自体は削除されません。

例:

```
String boxUserId = '12345678';
Boolean success = ExperienceCloudToolkit.deactivateUserAccount(boxUserId);
if (success) {
    System.debug('Box user deactivated.');
}
```

### `searchForExistingUser(String externalAppUserId)`

外部IDを使用してBox App Userを検索します。

シグネチャ: `Global static BoxUser.Info searchForExistingUser(String externalAppUserId)`

パラメータ:

| **名前** | **型** | **説明** |
| - | - | - |
| `externalAppUserId` | `String` | 検索の対象となる外部ID (通常はSalesforceユーザーID)。 |

戻り値:

* `BoxUser.Info`。見つかったBox App Userについての情報です。

スローされる例外:

* `ExperienceCloudToolkitException` (指定した外部IDでユーザーが見つからなかった場合)。

説明: Box APIにクエリを実行し、`external_app_user_id`が指定された値に一致するApp Userを検索します。Salesforceユーザーに関連付けられたBox App Userがすでに存在するかどうかを確認する場合に便利です。

例:

```
try {
    String sfUserId = UserInfo.getUserId();
    BoxUser.Info existingUser = ExperienceCloudToolkit.searchForExistingUser(sfUserId);
    System.debug('Found existing Box user: ' + existingUser.boxId);
} catch (ExperienceCloudToolkit.ExperienceCloudToolkitException e) {
    System.debug('No existing user found. A new one can be created.');
}
```

## 例外

### `ExperienceCloudToolkitException`

`searchForExistingUser()`でユーザーが見つからなかったときなど、操作が失敗した場合にはカスタム例外がスローされます。

## メモ

* すべてのメソッドは、サービスアカウントトークンを使用してBox APIに対する認証を行います。

* 作成されたApp Userは「プラットフォームアクセス専用」 (`is_platform_access_only = true`) です。つまり、アプリケーションを通じてのみBoxにアクセスできます。

* `external_app_user_id`フィールドは、Box App UserをSalesforceユーザーIDに関連付けます。

* APIのバージョン管理は、`SettingUtils.getAPISetting('ExperienceCloudToolkit')`構成を通じて行われます。
