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

次に、OAuth ユーザエージェントフローの概要を説明します。
- リソースの認証を要求するために、クライアントアプリケーションは、エンドユーザのブラウザをリソース所有者の認証サーバでホストされている Web ページにリダイレクトします。この場合は、Salesforce ログインページです。
- エンドユーザが Salesforce にログインして自分自身を認証します。この Web ページは、リソース所有者 (Salesforce) がホストし、エンドユーザが直接操作しているため、クライアント Web アプリケーションがユーザのログイン情報を見つけることはありません。
クライアントアプリケーションがすでにブラウザで実行されている場合、そのままブラウザをリダイレクトできます。クライアントアプリケーションがモバイルアプリケーションの場合、ブラウザを開く必要があります (iOS の UIWebView など)。エンドユーザはこの Web ページを使用して自分自身を認証し、その後、クライアントアプリケーションを認証します。
- 認証されると、認証サーバはエンドユーザの Web ブラウザをリダイレクト URL にリダイレクトします。この URL は、クライアントアプリケーションがアクセストークンと更新トークンを取得するために使用できます。
- 保護されるリソースは Chatter REST API リソースです。
Chatter REST API および Salesforce によるユーザエージェントフローの使用
ここでは、OAuth ユーザエージェントフローを Salesforce および Chatter 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 アプリケーションがアクセスできるデータを指定します。Chatter REST API にアクセスするために値を指定する必要はありません。値を指定する場合は、chatter_api 値を含める必要があります。 state 承認後にコールバック URL で返される、URL 符号化された状態データを指定します。 - ログインに成功したら、ユーザはアプリケーションを認証するように要求されます。ユーザがすでにアプリケーションを認証している場合、このステップはスキップされます。
- クライアントアプリケーションが認証されたことが Salesforce で確認されると、エンドユーザの Web ブラウザは、redirect_uri パラメータで指定されたコールバック URL にリダイレクトされます。このパラメータにはハッシュ記号 (#) の後に次の値が付加されます。これは、クエリ文字列ではありません。
パラメータ 説明 access_token Chatter REST API 要求を行うために使用可能なセッション ID。このセッション ID はユーザインターフェースでは使用できません。これは、ユーザのセッションと同様に扱い、厳密に保護する必要があります。 expires_in アクセストークンが有効な時間 (秒)。 refresh_token 新しいアクセストークン (セッション) を取得するために将来使用できるトークン。 更新トークンが返されるのは、リダイレクト URI が https://login.instance_name/services/oauth2/success であるか、HTTPS 以外のカスタムプロトコルで使用されている場合のみです。 次の追加パラメータが返されますが、このフローと Chatter 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 である場合か、カスタムプロトコルを使用する場合にのみ提供されます。
クライアントアプリケーションは、アクセストークンと更新トークンを取得すると、それらのトークンを使用して Chatter REST API に要求を行います。