ユーザーエージェント OAuth 認証フロー
通常、このフローは、JavaScript から直接 Connect REST API にアクセスするモバイルアプリケーションまたはアプリケーションで使用されます。このフローでは、クライアントアプリケーションは信頼できないため、クライアントのログイン情報やユーザーのログイン情報を保存できないということを前提にしています。
一般的なフローは次のようになります。個々のステップについては、その後に説明します。

次に、OAuth ユーザーエージェントフローの概要を説明します。
- リソースの認証を要求するために、クライアントアプリケーションは、エンドユーザーのブラウザーをリソース所有者の認証サーバーでホストされている Web ページにリダイレクトします。この場合は、Salesforce ログインページです。
- エンドユーザーが Salesforce にログインして自分自身を認証します。リソース所有者 (Salesforce) がこの Web ページをホストし、エンドユーザーが Web ページで直接操作しているため、クライアント Web アプリケーションがユーザーのログイン情報を見つけることはありません。
クライアントアプリケーションがすでにブラウザーで実行されている場合、そのままブラウザーをリダイレクトできます。クライアントアプリケーションがモバイルアプリケーションの場合、ブラウザーを開く必要があります (iOS の UIWebView など)。エンドユーザーはこの Web ページを使用して自分自身を認証し、その後、クライアントアプリケーションを認証します。
- 認証されると、認証サーバーはエンドユーザーの Web ブラウザーをリダイレクト URL にリダイレクトします。クライアントアプリケーションはこの URL を使用して、アクセストークンと更新トークンを取得できます。
- 保護されるリソースは Connect REST API リソースです。
Connect REST API および Salesforce によるユーザーエージェントフローの使用
ここでは、OAuth ユーザーエージェントフローを Salesforce および Connect REST API で使用する場合の詳細を具体的に説明します。
- 次の要求パラメーターを指定して、クライアントの Web ブラウザーをページ https://login.instance_name/services/oauth2/authorize に転送します。
パラメーター 説明 response_type この認証フローの場合、必ず token にする client_id このアプリケーション用に定義された接続アプリケーションからの [コンシューマー鍵] 値 redirect_uri このアプリケーション用に定義された接続アプリケーションからの [コールバック URL] 値 必要に応じて、次の要求パラメーターを含めることもできます。
パラメーター 説明 display 提供される Web ページの種別を示します。有効な値は、次のとおりです。 - page — 全画面のページ認証。これは、値が指定されていない場合のデフォルト値です。
- popup — 最新の Web ブラウザーのポップアップウィンドウ用に最適化されたコンパクトなダイアログ。
- touch — Android や iPhone など、最新のスマートフォン用に設計されたモバイル用に最適化されたダイアログ。
- mobile — BlackBerry OS 5 など、以前のスマートフォン用に設計された、モバイル用に最適化されたダイアログ。
scope アプリケーションがアクセスできるデータを指定します。Connect REST API にアクセスするために値を指定する必要はありません。値を指定する場合は、chatter_api 値を含める必要があります。 state 承認後にコールバック URL で返される、URL 符号化された状態データを指定します。 - ログインに成功したら、ユーザーはアプリケーションを認証するように要求されます。ユーザーがすでにアプリケーションを認証している場合、このステップはスキップされます。
- クライアントアプリケーションが認証されたことが Salesforce で確認されると、エンドユーザーの Web ブラウザーは、redirect_uri パラメーターで指定されたコールバック URL にリダイレクトされます。このパラメーターにはハッシュ記号 (#) の後に次の値が付加されます。これは、クエリ文字列ではありません。
パラメーター 説明 access_token Connect REST API 要求を行うために使用可能なセッション ID。このセッション ID はユーザーインターフェースでは使用できません。これは、ユーザーのセッションと同様に扱い、厳密に保護する必要があります。 expires_in アクセストークンが有効な時間 (秒)。 refresh_token 新しいアクセストークン (セッション) を取得するために将来使用できるトークン。 更新トークンが返されるのは、リダイレクト URI が https://login.instance_name/services/oauth2/success であるか、HTTPS 以外のカスタムプロトコルで使用されている場合のみです。 次の追加パラメーターが返されますが、このフローと Connect REST API では使用されません。
- instance_url
- id
- signature
- issued_at
- クライアントアプリケーションが Web アプリケーションの場合、そこで使用されるリダイレクト Web ページには、クライアントアプリケーションがアクセストークンと更新トークンを取得するために操作可能な JavaScript が含まれている場合があります。
または、クライアントアプリケーション (ネイティブまたは Web) がページ https://login.instance_name/services/oauth2/success をコールバック URL として使用している場合があります。リダイレクト時に実際にページを読み込む代わりに、リダイレクト URI を捕捉してパラメーター値を抽出する必要があります。refresh_token パラメーター値は、リダイレクト URI がこの URI である場合か、カスタムプロトコルを使用する場合にのみ提供されます。
クライアントアプリケーションは、アクセストークンと更新トークンを取得すると、それらのトークンを使用して Connect REST API に要求を行います。