- 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 エンドポイント、およびリクエストパラメーターとレスポンスフィールド。
By using this API and its documentation and building an integration, you agree to the Additional API Terms and Guidelines.
HTTP リクエストヘッダー
リクエストヘッダーは次のとおりです。
| ヘッダー | 値と説明 |
|---|---|
Accept |
|
Authorization |
各 API 呼び出しで、
アクセストークンとBasic認証スキームもご覧ください。 |
Content-Type |
|
Basic 認証スキーム
アクセストークンを取得する際は、/oauth/v2/tokensのリクエストボディでクライアントIDとクライアントシークレットを渡す代わりに、Basic認証スキームを使用できます。このスキームを使用するには、これらの認証情報をエンコードし、Authorization Basicヘッダーで渡します。
See also Basic Authentication Scheme in RFC 2617: HTTP Authentication: Basic and Digest Access Authentication.
To generate the Authorization Basic header value:
-
Concatenate the
client_idandclient_secretwith a colon (:) as a separator.base64.encode("<client_id>:<client_secret>"); -
Apply the Base64-encoding algorithm to the string:
base64.encode("5e175cbb7f88e2048bd95323bbc9ca2fcec32ad60f95f7ee66ab53e099abe6f3:pJ4qRe2sdXRP0Whr3bwz9D37exFuuOtqJDRHMmmlLWV7J25rH7oItrPNCKzhaQf2"); -
Pass the Base64-encoded string as a basic HTTP
Authorizationheader:Authorization: Basic NWUxNzVjYmI3Zjg4ZTIwNDhiZDk1MzIzYmJjOWNhMmZjZWMzMmFkNjBmOTVmN2VlNjZhYjUzZTA5OWFiZTZmMzpwSjRxUmUyc2RYUlAwV2hyM2J3ejlEMzdleEZ1dU90cUpEUkhNbW1sTFdWN0oyNXJIN29JdHJQTkNLemhhUWYy
スコープ
スコープは、アプリ自身、他のユーザーアカウント、またはそれらに関連付けられた採用企業アカウントに代わって動作することをアプリに認可します。
一部の Indeed API では、アクセストークンをリクエストする際に追加のスコープが必要です。API 固有のスコープについては、各 API のドキュメントをご覧ください。
アプリに権限を付与するには、アクセストークンを取得する際に、scopeパラメーターを含めます。
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 エンドポイントをご覧ください。 ✔ 3-legged OAuth |
employer_access | 同意画面: ユーザーアカウントに関連付けられた採用企業を一覧表示し、採用企業のアクセストークンを取得 ユーザーに関連付けられたすべての採用企業アカウントを一覧表示します。採用企業のアクセストークンを取得するために必要です。 採用企業を一覧表示し、採用企業のアクセストークンを取得するには、次をご覧ください。
✔ 3-legged OAuth ✔ 2-legged OAuth |
offline_access | 同意画面: 付与した権限を維持 リフレッシュトークンの生成に必要です。Indeed OAuthのアクセストークンは1時間後に期限切れになるため、新しいアクセストークンを取得するにはリフレッシュトークンを使用します。 ✔ 3-legged OAuth |
oauth/v2/authorize エンドポイント
認可コードグラントタイプ(3-legged OAuth)の認可コードを取得するには、クエリパラメーターを指定して https://secure.indeed.com/oauth/v2/authorize エンドポイントを呼び出します。
Indeed は、対象アカウントの所有者であるエンドユーザーに OAuth 同意画面を表示します。
エンドユーザーが 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に従って、コードベリファイアから導出したOAuth PKCEコードチャレンジです。 例:
|
code_challenge_method |
例:
|
employer | 任意。 アクセストークンに関連付ける採用企業IDです。 リフレッシュトークンをアクセストークンと交換する際にも、このパラメーターを渡せます。 例:
|
prompt | 必須。 Indeedの採用企業選択画面を認可ユーザーに表示します。ユーザーは、アクセストークンに割り当てる採用企業アカウントをこの画面で選択します。認可リンクに 例:
Indeed の採用企業選択画面を表示するをご覧ください。 |
redirect_uri | 必須。 URLエンコードされたリダイレクトURLです。認可コード を取得するサイト上のページを識別します。アプリに登録したリダイレクトURLのいずれかと一致している必要があります。 例:
Indeed は
|
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 | 認可サーバーの issuer ID です。たとえば Indeed はこの値を、成功レスポンスとエラーレスポンスの両方で常に返します(RFC 9207)。Indeed のみと連携する場合は、この値 を無視しても問題ありません。クライアントが複数の認可サーバーに接続する場合は、mix-up attack を防ぐために、この値が Indeed の想定する issuer と一致することを検証してください。 Indeed は 例:
|
state | String | 任意です。Indeedは、このフィールドをリクエストで渡した場合にのみ返します。 例:
|
oauth/v2/tokens エンドポイント
クライアント ID とクライアントシークレットをアクセストークンと交換するには、Accept および Content-Type リクエストヘッダーとリクエストボディパラメーターを指定して、https://apis.indeed.com/oauth/v2/tokens に POST を送信します。
呼び出し例については、次をご覧ください。
次のリクエストボディパラメーターを含めます。
oauth/v2/tokens のリクエストボディパラメーター
| リクエストボディパラメーター | 説明 |
|---|---|
client_id | クライアントIDです。 例:
✔ 3-legged OAuth ✔ 2-legged OAuth |
client_secret | クライアントシークレットです。パブリッククライアントでは省略します。 例:
✔ 3-legged OAuth ✔ 2-legged OAuth |
code | アクセストークンと交換する認可コードです。 代わりにリフレッシュトークンを交換するには、 例:
✔ 3-legged OAuth |
code_verifier |
例:
✔ 3-legged OAuth、PKCEを使用する場合は必須 |
employer | アクセストークンに関連付ける採用企業IDです。 例:
✔ 2-legged OAuth ✔ 3-legged OAuth |
grant_type | 次のいずれかのグラントタイプを使用します。
例:
✔ 3-legged OAuth ✔ 2-legged OAuth ✔ Token exchange OAuth |
redirect_uri | URLエンコードされたリダイレクトURLです。認可コードを取得したときに使用したリダイレクトURLと一致している必要があります。 例:
認可コードを取得するをご覧ください。 ✔ 3-legged OAuth |
refresh_token | アクセストークンと交換するリフレッシュトークンです。Indeedはアクセストークンを取得したときにリフレッシュトークンを返します。 代わりに認可コードを交換するには、 例:
✔ 3-legged OAuth |
scope | 条件付きです。 アプリを登録したユーザーに関連付けられた採用企業アカウントを一覧表示する場合、またはそれらのアカウントの1つに対するアクセストークンを取得する場合は、 Token exchangeグラントタイプ(OAuth)では、 スコープをご覧ください。 例:
✔ 3-legged OAuth ✔ 2-legged OAuth |
sub | アイデンティティプロバイダー内のユーザーIDです。SCIMの 例:
✔ Token exchange OAuth |
subject_token | リクエストが代理で行われる当事者のIDを表すトークンです。トークンの発行者は、Indeedがこのトークンを検証する方法を提供する必要があります。 IndeedはIDトークンのみをサポートします。 例:
✔ Token exchange OAuth |
subject_token_type |
例:
✔ Token exchange OAuth |
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 トークンが返すものと同じ情報が含まれます。
呼び出し例については、userinfo エンドポイントをご覧ください。
v2/api/userinfo のパラメーター
このエンドポイントには、リクエストボディパラメーターもクエリパラメーターもありません。
v2/api/userinfo のレスポンスフィールド
エラーレスポンス
OAuthエラーのトラブルシューティングをご覧ください。