- 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 のレスポンスフィールド
- Error response
OAuth リファレンス
HTTP リクエストヘッダー、スコープ、API エンドポイント、リクエストパラメーター、レスポンスフィールドを説明します。
本 API および本ドキュメントを利用し、連携を構築することにより、Additional API Terms and Guidelines に同意したものとみなされます。
HTTP リクエストヘッダー
リクエストヘッダーは次のとおりです。
| ヘッダー | 値と説明 |
|---|---|
Accept |
|
Authorization |
各 API 呼び出しでは、
アクセストークンとBasic 認証スキームもご覧ください。 |
Content-Type |
|
Basic 認証スキーム
アクセストークンを取得する際は、/oauth/v2/tokens のリクエストボディでクライアント ID とクライアントシークレットを渡す代わりに、Basic 認証スキームを使用できます。このスキームを使用するには、これらの認証情報をエンコードし、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
スコープ
スコープは、アプリ自身、他のユーザーアカウント、またはそれらに関連付けられた雇用主アカウントに代わって動作することをアプリに認可します。
一部の 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 同意画面を表示します。
ユーザーがアプリのリクエストするスコープ(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 の雇用主選択画面を表示し、アクセストークンに割り当てる雇用主アカウントを選択してもらいます。認可リンクに 例:
|
redirect_uri | 必須です。 URL エンコードされたリダイレクト URL です。認可コードを受け取るサイト上のページを識別します。アプリに登録したリダイレクト URL のいずれかと一致している必要があります。 例: を次のようにエンコードします。
Indeed は
|
response_type | 必須です。 常に 例:
|
scope | 任意です。 アプリがリクエストする権限です。URL エンコードし、スコープをスペース区切りで指定します。エンコードにより、スペースはプラス記号( 例:
Scopes をご覧ください。 |
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 | 任意です。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 grant type (OAuth) では、 Scopes をご覧ください。 例:
✔ 3-legged OAuth ✔ 2-legged OAuth |
sub | ID プロバイダー内のユーザー 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 | 常に 例:
|