> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/reference/ja/ren-zheng/authentication/sign-in-with-roboflow-getting-started.md).

# Roboflow でサインイン（はじめに）

PKCE を使用した OAuth 2.1 の認可コードフローで、Roboflow アカウントを使ってユーザーを認証するアプリケーションを構築できます。これにより、あなたのアプリは Roboflow ユーザーの代理として、ユーザーが承認した権限の範囲内でのみ動作できます。

OAuth アクセストークンは `api.roboflow.com` で `Authorization: Bearer`。参照 [REST API で認証する](/reference/ja/purattofmu/rest-api/authenticate-with-the-rest-api.md) を使用します。詳しくは

エンドポイント一覧、公開範囲、エラー、そして実行可能なサンプルアプリについては、 [Roboflow でサインイン（開発者リファレンス）](/reference/ja/ren-zheng/authentication/sign-in-with-roboflow-developer-reference.md).

## OAuth アプリを作成する

アプリケーションを登録するには:

{% stepper %}
{% step %}

### 開発者設定を開く

次へ移動します **ワークスペース設定 > 開発者** Roboflow ダッシュボードの [app.roboflow.com](https://app.roboflow.com).

<figure><img src="/files/84b8fe385dd1c36db4f3e391bb901be0b9b0a983" alt="Developer settings with OAuth applications"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### 新しい OAuth アプリを作成する

クリックして **OAuth アプリを作成** (または **新しいアプリ**）を開き、以下を入力します:

| 項目                | 説明                                                                                                                                                                                                             |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **名前**            | 同意画面と OAuth アプリ一覧に表示される名前                                                                                                                                                                                      |
| **ホームページ URL**    | 製品の URL（同意画面に表示される情報）                                                                                                                                                                                          |
| **リダイレクト URI**    | 1 つ以上のコールバック URL（コードと完全に一致する必要があります）                                                                                                                                                                           |
| **トークンエンドポイント認証** | クライアントがシークレットをトークンエンドポイントに送信する方法: `client_secret_post` （リクエスト本文にシークレットを含める、既定）または `client_secret_basic` （HTTP Basic Authorization ヘッダーにシークレットを含める）。ほとんどの MCP ゲートウェイ（Azure、TrueFoundry）は `client_secret_basic`. |
| **許可されたスコープ**     | サインイン時に要求するすべてのスコープ                                                                                                                                                                                            |
| **公開範囲**          | **社内向け**, **非公開**、または **公開** - 参照: [開発者リファレンス - 公開範囲](/reference/ja/ren-zheng/authentication/sign-in-with-roboflow-developer-reference.md#visibility)                                                          |

<figure><img src="/files/a37fa9a34cb55d696f150558000aaded399788e0" alt="OAuth applications list on the Developer page"><figcaption></figcaption></figure>

<figure><img src="/files/f82418974ca78f3dd5ba7fadfe8a7a0fb17df8a9" alt="Create OAuth application form"><figcaption></figcaption></figure>

次のものが付与されます **クライアント ID** と **クライアントシークレット** (`rfcs_…`）。シークレットは一度しか表示されないため、サーバー側で安全に保管してください。
{% endstep %}
{% endstepper %}

### リダイレクト URI の例

| リダイレクト URI                             | 典型的な用途           |
| -------------------------------------- | ---------------- |
| `http://localhost:3001/oauth/callback` | 3001 ポートでのローカル開発 |
| `http://127.0.0.1:3001/oauth/callback` | アプリが `127.0.0.1` |
| `https://yourapp.com/oauth/callback`   | 本番環境             |

公開ホストでは HTTPS が必要です。HTTP が許可されるのはループバック（`localhost`, `127.0.0.1`, `::1`).

## 認可フロー

Roboflow は PKCE（Proof Key for Code Exchange）付きの認可コードグラントを使用します。PKCE はすべてのクライアントで必須です。

{% stepper %}
{% step %}

### PKCE の code verifier と challenge を生成する

ランダムな `code_verifier` （43〜128 文字）を作成し、そこから `code_challenge` を SHA-256 で生成します:

```python
import hashlib, base64, secrets

code_verifier = secrets.token_urlsafe(32)
code_challenge = base64.urlsafe_b64encode(
    hashlib.sha256(code_verifier.encode()).digest()
).rstrip(b"=").decode()
```

{% endstep %}

{% step %}

### ユーザーを認可ページへリダイレクトする

ユーザーを Roboflow の認可エンドポイントへ送ります:

```
https://app.roboflow.com/oauth/authorize?
  client_id=YOUR_CLIENT_ID&
  redirect_uri=https://yourapp.com/callback&
  response_type=code&
  scope=openid profile email workspace:read&
  code_challenge=YOUR_CODE_CHALLENGE&
  code_challenge_method=S256&
  state=YOUR_STATE_VALUE
```

暗号学的にランダムな `state` を使用し、コールバック時に検証してください。 `code_verifier` コードを交換するまでサーバー側に保存します。

ユーザーには、アプリが要求した権限を含む同意画面が表示されます。

<figure><img src="/files/10cabe7d355042d33a63548533e6f0452afdb845" alt="OAuth consent screen with workspace selection and scopes"><figcaption></figcaption></figure>

承認後、Roboflow はあなたの `redirect_uri` で `へ` と `state`.
{% endstep %}

{% step %}

### コードをトークンに交換する

サーバー上で（ブラウザでは絶対に行わず）、トークンエンドポイントに POST します:

```bash
curl -X POST https://app.roboflow.com/oauth/token \\
  -H "Content-Type: application/x-www-form-urlencoded" \\
  -d "grant_type=authorization_code" \\
  -d "client_id=YOUR_CLIENT_ID" \\
  -d "client_secret=YOUR_CLIENT_SECRET" \\
  -d "code=AUTHORIZATION_CODE" \\
  -d "redirect_uri=https://yourapp.com/callback" \\
  -d "code_verifier=YOUR_CODE_VERIFIER"
```

レスポンスには以下が含まれます:

* `access_token` - Roboflow API を呼び出す（有効期限は 1 時間、MCP クライアントでは 24 時間）
* `refresh_token` - 新しいアクセストークンを取得する（有効期限は 30 日）
* `id_token` - ID クレームを含む JWT（ `openid` が要求された場合）
  {% endstep %}
  {% endstepper %}

## OAuth トークンの使用

アクセストークンを取得したら、 `Authorization` ヘッダーに含めます:

```bash
curl -H "Authorization: Bearer rfoa_..." https://api.roboflow.com/
```

## トークンを検証する

不透明な `rfoa_` アクセストークンを持っていて、クライアント認証情報なしで状態や有効期限を確認する必要がある場合は、検証エンドポイントを呼び出します:

```bash
curl -H "Authorization: Bearer rfoa_..." https://app.roboflow.com/oauth/validate
```

レスポンス（常に HTTP 200）:

```json
{
  "active": true,
  "exp": 1893456000,
  "workspace_url": "your-workspace",
  "scopes": ["workspace:read", "project:read"]
}
```

期限切れまたは失効したトークンは `{ "active": false, "exp": null, ... }` を HTTP エラーではなく返すため、呼び出し側は無効なトークンと到達不能な認可サーバーを区別できます。

## トークンを更新する

アクセストークンは 1 時間後に失効します（MCP クライアントでは 24 時間）。リフレッシュトークンを使って新しいトークンを取得します:

```bash
curl -X POST https://app.roboflow.com/oauth/token \\
  -H "Content-Type: application/x-www-form-urlencoded" \\
  -d "grant_type=refresh_token" \\
  -d "client_id=YOUR_CLIENT_ID" \\
  -d "client_secret=YOUR_CLIENT_SECRET" \\
  -d "refresh_token=YOUR_REFRESH_TOKEN"
```

## トークンを取り消す

アクセストークンまたはリフレッシュトークンを取り消すには:

```bash
curl -X POST https://app.roboflow.com/oauth/revoke \\
  -H "Content-Type: application/x-www-form-urlencoded" \\
  -d "token=TOKEN_TO_REVOKE"
```

## ユーザー情報

認証済みユーザーのプロフィール情報を取得します（必要: `openid`):

```bash
curl -H "Authorization: Bearer rfoa_..." https://app.roboflow.com/oauth/userinfo
```

## 利用可能なスコープ

アプリは以下のスコープの任意の組み合わせを要求できます。各スコープは OAuth アプリの **許可されたスコープ** 一覧

### 識別スコープ

| スコープ      | 説明                                |
| --------- | --------------------------------- |
| `openid`  | 必須。 `sub` クレームに安定したユーザー ID を返します。 |
| `profile` | ユーザーの表示名とアバターを読み取ります。             |
| `email`   | ユーザーのメールアドレスを読み取ります。              |

### API スコープ

| スコープ                  | 説明                            |
| --------------------- | ----------------------------- |
| `workspace:read`      | ワークスペースの詳細を読み取り、プロジェクトを一覧表示する |
| `project:create`      | プロジェクトを作成する                   |
| `project:read`        | プロジェクトの詳細を読み取る                |
| `project:update`      | プロジェクト設定を更新する                 |
| `image:create`        | 画像をアップロードする                   |
| `image:read`          | 画像を読み取り、ダウンロードする              |
| `image:tag`           | 画像タグを追加・削除する                  |
| `image:annotate`      | アノテーションを作成・更新する               |
| `model:infer`         | 推論を実行する                       |
| `model:deploy`        | モデルをデプロイする                    |
| `model:manage`        | モデル設定を管理する                    |
| `model-eval:read`     | モデル評価結果を読み取る                  |
| `workflow:create`     | ワークフローを作成する                   |
| `workflow:read`       | ワークフローを読み取る                   |
| `workflow:update`     | ワークフローを更新する                   |
| `version:create`      | データセットバージョンを作成する              |
| `version:read`        | データセットバージョンを読み取る              |
| `version:update`      | データセットバージョンを更新する              |
| `training-job:create` | トレーニングジョブを開始する                |
| `folder:create`       | プロジェクトフォルダを作成する               |
| `folder:read`         | プロジェクトフォルダを読み取る               |
| `folder:update`       | プロジェクトフォルダを更新する               |
| `folder:delete`       | プロジェクトフォルダを削除する               |

<details>

<summary>追加スコープ</summary>

| スコープ                         | 説明                      |
| ---------------------------- | ----------------------- |
| `device:read`                | デバイスを読み取る               |
| `device:update`              | デバイス設定を更新する             |
| `vision-events:read`         | vision イベントを読み取る        |
| `vision-events:write`        | vision イベントを作成する        |
| `vision-events:manage`       | vision イベントのユースケースを管理する |
| `annotation-job:create`      | アノテーションジョブを作成する         |
| `annotation-job:read`        | アノテーションジョブを読み取る         |
| `video-inference-job:create` | 動画推論ジョブを作成する            |
| `video-inference-job:read`   | 動画推論ジョブを読み取る            |
| `integration:create`         | 統合を作成する                 |
| `integration:delete`         | 統合を削除する                 |
| `credentials:create`         | 認証情報を作成する               |
| `credentials:read`           | 認証情報を読み取る               |
| `credentials:update`         | 認証情報を更新する               |
| `credentials:delete`         | 認証情報を削除する               |
| `data-staging:read`          | ステージング済みデータを読み取る        |
| `data-staging:write`         | ステージング済みデータを書き込む        |
| `data-staging:delete`        | ステージング済みデータを削除する        |
| `batch-processing:read`      | バッチジョブを読み取る             |
| `batch-processing:trigger`   | バッチ処理をトリガーする            |
| `batch:read`                 | バッチを読み取る                |
| `workspace-stats:read`       | ワークスペース統計を読み取る          |

</details>

## OIDC ディスカバリー

Roboflow は標準の OpenID Connect ディスカバリードキュメントを公開しています:

* **OpenID 設定**: `https://app.roboflow.com/.well-known/openid-configuration`
* **JWKS** （ID トークンの検証用）: `https://app.roboflow.com/.well-known/jwks.json`

## 次のステップ

* [Roboflow でサインイン（開発者リファレンス）](/reference/ja/ren-zheng/authentication/sign-in-with-roboflow-developer-reference.md) - ホスト、公開範囲、エラー、サンプルアプリ
* [REST API で認証する](/reference/ja/purattofmu/rest-api/authenticate-with-the-rest-api.md)
