# Rememberizerアプリの認証

Rememberizerの実装は、標準の[認可コードグラントタイプ](https://tools.ietf.org/html/rfc6749#section-4.1)をサポートしています。

アプリのユーザーを認証するためのウェブアプリケーションフローは次のとおりです。

1. ユーザーはRememberizerにリダイレクトされ、アカウントを認証します。
2. ユーザーはアプリケーションで使用するメメントを選択します。
3. アプリケーションはユーザーのアクセストークンを使用してAPIにアクセスします。

フローのUI例を見るには、[#explore-third-party-apps-and-service](https://docs.rememberizer.ai/ja/ge-ren-li-yong/integrations/manage-third-party-apps#explore-third-party-apps-and-service "mention")ページを訪れてください。

近日公開: OAuth2認証フローダイアグラム

このシーケンス図は、次の間の完全なOAuth2フローを示します：

* ユーザーのブラウザ
* あなたのアプリケーション（クライアント）
* Rememberizer認証サーバー
* Rememberizer APIリソース

この図は、プロセスのすべてのステップにおける認可コード、トークン、およびAPIリクエストの交換を示します。

### ステップ 1. ユーザーの Rememberizer アイデンティティをリクエストする

ユーザーを Rememberizer 認証サーバーにリダイレクトして、認証および承認プロセスを開始します。

```
GET https://api.rememberizer.ai/api/v1/auth/oauth2/authorize/
```

パラメータ:

<table><thead><tr><th width="236">名前</th><th>説明</th></tr></thead><tbody><tr><td>client_id</td><td><strong>必須</strong><br>アプリケーションのクライアント ID。これは Developer で確認できます。左上隅の <strong>Developer</strong> をクリックします。登録されたアプリのリストから、あなたのアプリをクリックすると、<strong>App Credentials.</strong> にクライアント ID が表示されます。</td></tr><tr><td>response_type</td><td><strong>必須</strong><br>承認コードグラントの場合は <code>code</code> である必要があります。</td></tr><tr><td>scope</td><td><p><strong>オプション</strong></p><p>ユーザーの代理でアプリケーションがアクセスできるリソースを特定するスコープのスペース区切りリスト。</p></td></tr><tr><td>redirect_uri</td><td><strong>必須</strong><br>承認後にユーザーが送信されるアプリケーション内の URL。</td></tr><tr><td>state</td><td><p><strong>必須</strong></p><p>リクエストとコールバックの間で状態を維持するためにクライアントによって使用される不透明な値。認証サーバーは、ユーザーエージェントをクライアントにリダイレクトする際にこの値を含めます。<br></p></td></tr></tbody></table>

### ステップ 2. ユーザーが思い出を選択し、設定する

ユーザーはアプリで使用する思い出を選択します。

### ステップ 3. ユーザーは Rememberizer によってあなたのサイトにリダイレクトされます

ユーザーが自分の思い出を選択した後、Rememberizer は一時的な `code` パラメータと、前のステップで提供した状態を `state` パラメータとしてあなたのサイトにリダイレクトします。一時的なコードは短時間で期限切れになります。状態が一致しない場合、第三者がリクエストを作成したことになり、プロセスを中止する必要があります。

### ステップ 4. 認可コードをリフレッシュトークンとアクセストークンに交換する

```
POST https://api.rememberizer.ai/api/v1/auth/oauth2/token/
```

このエンドポイントは、以下の入力パラメータを受け取ります。

<table><thead><tr><th width="165">名前</th><th>説明</th></tr></thead><tbody><tr><td>client_id</td><td><strong>必須</strong><br>アプリケーションのクライアントID。開発者でこの値を見つけることができます。このIDを見つける手順はステップ1にあります。</td></tr><tr><td>client_secret</td><td><strong>必須</strong><br>アプリケーションのためにRememberizerから受け取ったクライアントシークレット。</td></tr><tr><td>code</td><td>ステップ3で受け取った認可コード。</td></tr><tr><td>redirect_uri</td><td><strong>必須</strong><br>認可後にユーザーが送信されるアプリケーション内のURL。ステップ1のredirect_uriと一致する必要があります。</td></tr></tbody></table>

### ステップ 5. アクセストークンを使用してAPIにアクセスする

アクセストークンを使用すると、ユーザーの代理でAPIにリクエストを送信できます。

```
Authorization: Bearer OAUTH-TOKEN
GET https://api.rememberizer.ai/api/me/
```

例えば、curlでは次のようにAuthorizationヘッダーを設定できます。

```shell
curl -H "Authorization: Bearer OAUTH-TOKEN" https://api.rememberizer.ai/api/me/
```

## 参考資料

Github: <https://github.com/skydeckai/rememberizer-integration-samples>
