> ## 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.

# ヘッドレス環境のログイン

export const Link = ({href, children, className, ...props}) => {
  const localizedHref = localizeLink(href);
  return <a href={localizedHref} className={className} {...props}>
      {children}
    </a>;
};

コードを手動で入力して、ブラウザのないマシンでBox CLIを認証します。

ブラウザが使用できないリモートサーバー、コンテナ、CI/CDパイプラインなど、ヘッドレス環境でBox CLIを認証するには、`--code`フラグを使用します。

## 前提条件

* Box CLIが<Link href="/guides/cli">インストールされている</Link>。
* 承認手順を完了するための別のマシン (例えばノートパソコン) でブラウザにアクセスできる。

## 仕組み

標準の`box login`コマンドを実行すると、同じマシンでブラウザが開かれ、自動的に承認レスポンスを受信するローカルのコールバックサーバーが起動します。ヘッドレス環境では、そのどちらもできません。

`--code`フラグを使用すると、ログインフローが変更されます。

* ブラウザが開く代わりに、CLIによって承認URLが出力されます。
* ローカルのコールバックサーバーは起動されません。
* 別のマシンのブラウザで承認を行った後、そこで得られるコードと状態を手動でコピーしてCLIに入力します。

## 認証

### 手順1: `--code`フラグを指定してログインを開始する

ヘッドレスマシンで、次のコマンドを実行します。

```bash theme={null}
box login --code
```

CLIに承認URLが出力され、入力を待機する状態になります。

<Tip>
  `--code`はその他の`box login`オプションと組み合わせることができます。例えば、カスタムのBox Platformアプリで認証を行う場合は、求められたときにクライアントIDとクライアントシークレットを指定します。
</Tip>

### 手順2: 別のマシンのブラウザで承認を行う

CLIに出力された承認URLをコピーし、ブラウザがあるマシンでそのURLを開きます。Boxにサインインして \[**Boxへのアクセスを許可**] を選択します。

### 手順3: リダイレクトURLからコードと状態をコピーする

アクセスを許可すると、ブラウザで`localhost`コールバックURLにリダイレクトされます。ヘッドレスマシンではコールバックサーバーが実行されていないため、ページは読み込まれず、ブラウザには接続エラーが表示されます。これは想定どおりの動作です。

ブラウザのアドレスバーのURLを見ると、必要な値が含まれています。

```
http://localhost:3000/callback?state=AUTHORIZATION_STATE&code=CODE_VALUE
```

このURLから`code`と`state`の値をコピーしてください。

### 手順4: CLIでコードを入力する

ヘッドレスマシンのターミナルに戻って、`code`と`state`の値をCLIのプロンプトに貼り付けます。

CLIによって認証の成功が確認されると、コマンドを実行できる状態になります。

### 手順5: 設定を確認する

```bash theme={null}
box users:get me
```

認証が成功すると、CLIはBoxユーザーアカウントに関する情報を返します。

## ブラウザがあるマシンでの`--code`の使用

`--code`フラグは、ヘッドレス環境用のオプションです。ブラウザがあるマシンで使用すると、以下のようになります。

* CLIでは引き続き承認URLが出力されます。
* 承認後、ブラウザでコールバックURLにリダイレクトされます。`--code`によってローカルのコールバックサーバーの起動がスキップされるため、リダイレクトページは読み込まれず、ブラウザには接続エラーが表示されます。
* ヘッドレス環境と同様、CLIは`code`と`state`の値が手動で入力されるのを待機し続けます。

同じマシンでブラウザが使用できる場合は、`--code`を指定せずに`box login`を実行することで、スムーズにログインできます。
