- HTTP リクエストヘッダー
- Basic 認証スキーム
- スコープ
- OAuth 同意画面
- インクリメンタル認可
- 付与されたスコープ
- oauth/v2/authorize エンドポイント
- oauth/v2/authorize のクエリパラメーター
- oauth/v2/authorize のレスポンスフィールド
- oauth/v2/tokens エンドポイント
- oauth/v2/tokens のリクエストボディパラメーター
- oauth/v2/tokens のレスポンスフィールド
- v2/api/appinfo エンドポイント
- v2/api/appinfo のパラメーター
- v2/api/appinfo のレスポンスフィールド
- v2/api/userinfo エンドポイント
- v2/api/userinfo のパラメーター
- v2/api/userinfo のレスポンスフィールド
- エラーレスポンス
- 関連項目
- ガイド
- 用語集
- 仕様
OAuth リファレンス
HTTP リクエストヘッダー、スコープ、API エンドポイント、リクエストパラメーター、レスポンスフィールドを説明します。
本 API および本ドキュメントを利用し、連携を構築することにより、Additional API Terms and Guidelines に同意したものとみなされます。
HTTP リクエストヘッダー
#リクエストヘッダーは次のとおりです。
| ヘッダー | 値と説明 |
|---|---|
Accept | application/json |
Authorization |
各 API 呼び出しでは、
アクセストークンとBasic 認証スキームもご覧ください。 |
Content-Type |
|
Basic 認証スキーム
#アクセストークンを取得する際は、クライアント ID とクライアントシークレットを /oauth/v2/tokens のリクエストボディではなく、Authorization: Basic ヘッダーで渡すことができます。
RFC 2617: HTTP Authentication: Basic and Digest Access Authentication の Basic Authentication Scheme (新しいウィンドウで開きます) もご覧ください。
Authorization Basic ヘッダーの値を生成するには、次の手順で行います。
-
client_idとclient_secretを、区切り文字としてコロン(:)で連結します。base64.encode("<client_id>:<client_secret>"); -
その文字列に Base64 エンコードアルゴ リズムを適用します。
base64.encode("5e175cbb7f88e2048bd95323bbc9ca2fcec32ad60f95f7ee66ab53e099abe6f3:pJ4qRe2sdXRP0Whr3bwz9D37exFuuOtqJDRHMmmlLWV7J25rH7oItrPNCKzhaQf2"); -
Base64 エンコードされた文字列を、基本 HTTP
Authorizationヘッダーとして渡します。Authorization: Basic NWUxNzVjYmI3Zjg4ZTIwNDhiZDk1MzIzYmJjOWNhMmZjZWMzMmFkNjBmOTVmN2VlNjZhYjUzZTA5OWFiZTZmMzpwSjRxUmUyc2RYUlAwV2hyM2J3ejlEMzdleEZ1dU90cUpEUkhNbW1sTFdWN0oyNXJIN29JdHJQTkNLemhhUWYy
スコープ
#スコープを使用すると、アプリはアプリ自身、他のユーザーアカウント、またはそれらに関連付けられた採用企業アカウントに代わって動作できます。
3-legged OAuth では、同意の前に、リクエストするスコープを /oauth/v2/authorize リクエストの scope パラメーターに含めます。2-legged OAuth では、必要に応じて scope パラメーターを含めます。たとえば、採用企業アカ ウントのトークンを取得する場合は scope=employer_access を指定します。一部の Indeed API では追加のスコープが必要です。各 API のドキュメントをご覧ください。
OAuth 同意画面
#認可コードグラントタイプ(3-legged OAuth)では、アプリが https://secure.indeed.com/oauth/v2/authorize を呼び出すと、Indeed は OAuth 同意画面を表示します。
ユーザーがアプリのリクエストするスコープ(employer_access など)に対して Allow を選択すると、Indeed は認可コードを redirect_uri に送信し、code、iss、state のレスポンスフィールドを追加します。oauth/v2/authorize のレスポンスフィールドをご覧ください。
ユーザーが一度スコープを付与すると、アプリはそのスコープを保持します。たとえば、その後アプリが employer_access を必要とする場合、OAuth 同意画面では employer_access に対してのみユーザーに許可を求め、email や offline_access については再度求めません。
ユーザーは、付与したスコープを Indeed の Third-party applications with account access (新しいウィンドウで開きます) ページでいつでも取り消せます。次回そのアプリを使用するときに、ユーザーは再度スコープを付与できます。
インクリメンタル認可
#インクリメンタル認可を使用すると、OAuth アプリは必要になった時点でスコープをリクエストできます。これには、アプリがすでに持っている権限を維持する offline_access スコープが必要です。たとえば、アプリが email をリクエストする場合は、offline_access もリクエストする必要があります。
付与されたスコープ
#oauth/v2/tokens レスポンスの consented_scope フィールドには、アプリに付与されたスコープが一覧表示されます。
{ "access_token": "<access_token>", "refresh_token": "<refresh_token>", "id_token": "<id_token>", "scope": "offline_access employer_access email", "consented_scope": "offline_access employer_access email", "convid": "1er835qvtu54n800", "token_type": "Bearer", "expires_in": 3600}3-legged OAuth では、OAuth 同意画面の Current permissions タブにもスコープが一覧表示されます。
| スコープ | 権限 |
|---|---|
email | 同意画面: メールアドレスを表示 ID トークンまたは userinfo エンドポイントをご覧ください。
|
employer_access | 同意画面: ユーザーアカウントに関連付けられた採用企業を一覧表示し、採用企業のアクセストークンを取得する ユーザーに関連付けられたすべての採用企業アカウントを一覧表示します。採用企業のアクセストークンを取得するために必要です。 採用企業を一覧表示し、採用企業のアクセストークンを取得する方法については、次をご覧ください。
|
offline_access | 同意画面: 付与した権限を維持する リフレッシュトークンを生成するために必要です。Indeed OAuth アクセストークンは 1 時間後に期限切れになるため、新しいアクセストークンを取得するにはリフレッシュトークンを使用します。
|
oauth/v2/authorize エンドポイント
#認可コードグラントタイプ(3-legged OAuth)の認可コードを取得するには、クエリパラメーターを指定して https://secure.indeed.com/oauth/v2/authorize エンドポイントを呼び出します。
Indeed は、対象アカウントを所有するエンドユーザーに OAuth 同意画面を表示します。
ユーザーがアプリのリクエストするスコープ(employer_access など)に対して Allow を選択すると、Indeed は認可コードを redirect_uri に送信し、code、iss、state のレスポンスフィールドを追加します。oauth/v2/authorize のレスポンスフィールドをご覧ください。
呼び出し例については、認可コードを取得するをご覧ください。
oauth/v2/authorize のクエ リパラメーター
#このエンドポイントとこれらのクエリパラメーターは、3-legged OAuth にのみ適用されます。
| クエリパラメーター | 説明 |
|---|---|
client_id | 必須です。 クライアント ID です。 例:
|
code_challenge | パブリッククライアントでは 必須、コンフィデンシャルクライアントでは 推奨 です。 RFC 7636: Proof Key for Code Exchange by OAuth Public Clients (新しいウィンドウで開きます) に従って、code verifier から導出した OAuth PKCE の code challenge です。 例:
|
code_challenge_method |
例:
|
employer | 任意です。 アクセストークンに関連付ける採用企業 ID です。 リフレッシュトークンをアクセストークンと交換する際にも、このパラメーターを渡せます。 例:
|
prompt | 任意です。 認可を行うユーザーに Indeed の採用企業選択画面を表示し、アクセストークンに割り当てる採用企業アカウントを選択してもらいます。認可リンクに 例:
Indeed の採用企業選択画面を表示するをご覧ください。 |
redirect_uri | 必須です。 URL エンコードされたリダイレクト URL です。認可コードを受け取るサイト上のページを識別します。アプリに登録したリダイレクト URL のいずれかと一致している必要があります。 例: を次のようにエンコードします。
|
response_type | 必須です。 常に 例:
|
scope | 任意です。 アプリがリクエストする権限です。URL エンコードし、スコープをスペース区切りで指定します。エンコードにより、スペースはプラス記号( 例:
スコープをご覧ください。 |
state | 推奨です。 CSRF 攻撃を防止します。リクエストとコールバックの間で状態を保持するために、アプリが作成する一意の文字列を使用します。Indeed はこの値をリダイレクト URI に返します。 例:
RFC 6819: OAuth 2.0 Threat Model and Security Considerations の Threat: CSRF Attack against redirect-uri (新しいウィンドウで開き ます) をご覧ください。 |
oauth/v2/authorize のレスポンスフィールド
#| レスポンスフィールド | 型 | 説明 |
|---|---|---|
code | String | 認可コードです。10 分間有効です。 例:
|
iss | String | 認可サーバーの発行者 ID です。たとえば Indeed はこの値を、成功レスポンスとエラーレスポンスの両方で常に返します(RFC 9207 (新しいウィンドウで開きます))。Indeed のみと連携する場合は、この値を無視できます。クライアントが複数の認可サーバーに接続する場合は、認可サーバー取り違え攻撃を防ぐために、この値が Indeed の想定する発行者と一致することを検証してください。 Indeed は 例:
|
state | String | リクエストで 例:
|
oauth/v2/tokens エンドポイント
#アクセストークンを取得または更新するには、Accept: application/json と Content-Type: application/x-www-form-urlencoded のヘッダー、およびリクエストボディパラメーターを指定して https://apis.indeed.com/oauth/v2/tokens に POST を送信します。
呼び出し例については、次をご覧ください。
oauth/v2/tokens のリクエストボディパラメーター
#| リクエストボディパラメーター | 説明 |
|---|---|
client_id | クライアント ID です。 例:
リクエストボディの代わりに、
|
client_secret | クライアントシークレットです。パブリッククライアントでは省略します。 例:
リクエストボディの代わりに、
|
code | アクセストークンと交換する 認可コード です。 代わりにリフレッシュトークンを交換するには、 例:
|
code_verifier |
例:
|
employer | アクセストークンに関連付ける採用企業 ID です。 例:
|
grant_type | 次のいずれかのグラントタイプを使用します。
例:
|
redirect_uri | URL エンコードされたリダイレクト URL です。認可コードを取得した際に使用したリダイレクト URL と一致している必要があります。 例: をエンコードし、次のように設定します。
|
refresh_token | アクセストークンと交換するリフレッシュトークンです。Indeed はアクセストークンを取得した際にリフレッシュトークンを返します。 代わりに認可コードを交換するには、 例:
|
scope | 条件付きです。 アプリを登録したユーザーに関連付けられた採用企業アカウントを一覧表示する場合、またはそれらのアカウントの 1 つに対するアクセストークンを取得する場合は、 トークンエクスチェンジグラントタイプ(OAuth)では、 スコープをご覧ください。 例:
|
sub | ID プロバイダー内のユーザー ID です。SCIM の 例:
|
subject_token | リクエストの対象となる当事者を識別するトークンです。トークン発行者は、Indeed がこのトークンを検証する方法を提供する必要があります。 Indeed は ID トークンのみをサポートします。 例:
|
subject_token_type |
例:
|
oauth/v2/tokens のレスポンスフィールド
#| レスポンスフィールド | 型 | 説明 |
|---|---|---|
access_token | String | アクセストークンです。 例:
|
consented_scope | String | ユーザーがアプリに付与したすべてのスコープをスペース区切りで示すリストです。Indeed は、ユーザーが 現在のアクセストークンに含まれないスコープが含まれる場合があります。 例:
|
convid | String | 会話識別子です。 例:
|
error | String | エラータイプです。 例:
|
error_description | String | エラーの説明です。 例:
|
expires_in | Integer | トークンが有効な期間を秒単位で示します。トークンは 1 時間(3600 秒)有効です。 例:
|
id_token | String | ID トークンです。 例:
ID Token (新しいウィンドウで開きます) をご覧ください。 |
issued_token_type | String | 発行されたトークンのタイプです。 例:
|
refresh_token | String | Indeed は、 例:
|
scope | String | このアクセストークンに含まれるスコープを、 例:
|
token_type | String | 常に 例:
|
v2/api/appinfo エンドポイント
#アプリを登録したユーザーアカウントに関連付けられた採用企業を一覧表示するには、Authorization ヘッダーで Bearer スキームを使用してアクセストークンを渡し、https://secure.indeed.com/v2/api/appinfo を呼び出します。
呼び出し例については、選択画面を作成するをご覧ください。
v2/api/appinfo のパラメーター
#このエンドポイントには、リクエストボディパラメーターもクエリパラメーターもありません。
v2/api/appinfo のレスポンスフィールド
#v2/api/userinfo エンドポイント
#現在のユーザーのアカウント情報を取得するには、https://secure.indeed.com/v2/api/userinfo に GET を送信します。レスポンスは、ID トークン内の情報と一致します。
v2/api/userinfo のパラメーター
#このエンドポイントには、リクエストボディパラメーターもクエリパラメーターもありません。
v2/api/userinfo のレスポンスフィールド
#| レスポンスフィールド | 型 | 説明 |
|---|---|---|
email | String | ユーザーのメールアドレスです。
例: |
email_verified | Boolean | ユーザーがメールアドレスを確認済みかどうかを示します。
例:
|
employers | Object | アプリを登録したユーザーアカウントに関連付けられた採用企業アカウントです。各採用企業には、採用企業 ID と名前が含まれます。 このオブジェクトを表示するには、ユーザーが |
sub | String | ユーザーアカウントの一意の識別子です。 例:
|
エラーレスポンス
#OAuth エラーのトラブルシューティングをご覧ください。
関連項目
#ガイド
#- 2-legged OAuth > 採用企業のアクセストークンを取得する — アプリに関連付けられた採用企業のアクセストークンを取得する方法を説明します。
- 3-legged OAuth > 採用企業のアクセストークンを取得する — ユーザーが認可した採用企業のアクセストークンを取得する方法を説明します。
- 3-legged OAuth > Indeed の採用企業選択画面を表示する — アクセストークンに使用する採用企業アカウントをユーザーに選択してもらう方法を説明します。
- 3-legged OAuth > userinfo エンドポイント — 現在のユーザーのアカウント情報を取得する方法を説明します。
用語集
#仕様
#- OpenID Connect Core 1.0 > ID Token (新しいウィンドウで開きます) — ID トークンを定義しています。
- RFC 6819 > Threat: CSRF Attack against redirect-uri (新しいウィンドウで開きます) —
stateパラメーターを使用する理由を説明しています。 - RFC 7636: Proof Key for Code Exchange by OAuth Public Clients (新しいウィンドウで開きます) — PKCE と
code_challengeを定義しています。 - RFC 9207: OAuth 2.0 Authorization Server Issuer Identification (新しいウィンドウで開きます) —
issレスポンスフィールドを定義しています。