クライアントクレデンシャルグラントタイプ(2-legged OAuth)
アプリ自身として動作することを認可します。
本 API および本ドキュメントを利用し、連携を構築することにより、Additional API Terms and Guidelines に同意したものとみなされます。
概要
#ユーザーのサインインなしに、アプリ自身として Indeed API を呼び出す場合は、クライアントクレデンシャルグラントタイプを使用します。アプリはクライアント ID とシークレットをアクセストークンと交換し、API 呼び出しのたびにそのトークンを送信します。
次のこともできます。
手順
#1. OAuth 認証情報を取得する
#Indeed パートナーになると、Indeed が連携用のアプリを作成します。Partner Console (新しいウィンドウで開きます) にサインインすると、アプリと OAuth 認証情報(クライアント ID とシークレット)を確認できます。API 呼び出しを認証するには、これらの認証情報をアクセストークンと交換します。
2. アクセストークンを取得する
#アクセストークンを取得するには、curl (新しいウィンドウで開きます) などのコマンドラインツールや Insomnia (新しいウィンドウで開きます) などの UI ツールを使用して、次のヘッダーとボディパラメーターで https://apis.indeed.com/oauth/v2/tokens に POST リクエストを送信します。
クライアントシークレットをエンドユーザーに公開しないでください。Indeed は、バックエンドでトークンを生成することを推奨します。
curl -L 'https://apis.indeed.com/oauth/v2/tokens' \ -H 'Accept: application/json' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'client_id=<client_id>' \ -d 'client_secret=<client_secret>' \ -d 'grant_type=client_credentials' \ -d 'scope=employer_access'リクエストヘッダーは次のとおりです。
リクエストボディのパラメーターは次のとおりです。
{ "access_token": "<access_token>", "scope": "employer_access", "token_type": "Bearer", "expires_in": 3600}トークンは 1 時間(3600 秒)で有効期限が切れます。トークンは 1 時間ごとに更新します。
3. Indeed API を呼び出す
#Indeed GraphQL APIを呼び出すには、以下のヘッダーとGraphQLクエリまたはミューテーションを指定してhttps://apis.indeed.com/graphqlにPOSTリクエストを送信します。
curl -L 'https://apis.indeed.com/graphql' \ -H 'Authorization: Bearer <access_token>' \ -H 'Content-Type: application/json' \ -d '{"query":"query {\n jobSearch(\n location: { radius: 5, radiusUnit: MILES, where: \"Austin\" }\n what: \"Nurse\"\n limit: 5\n ) {\n results {\n job {\n title\n sourceEmployerName\n }\n }\n }\n}","variables":{}}'リクエストヘッダー:
| ヘッダー | 値 | 説明 |
|---|---|---|
Authorization | Bearer <token> | このヘッダーを使用してサーバーで認証し、保護されたリソースにアクセスします。このヘッダーで Bearer 認証スキームを使用してアクセストークンを渡します。oauth/v2/tokens エンドポイントでは、リクエストボディで client_id と client_secret を渡す代わりに、Basic 認証スキームを使用します。アクセストークンを取得する、Authorization header (新しいウィンドウで開きます)、およびBasic authentication schemeをご覧ください。 |
Content-Type | application/json | リソースのメディアタイプ (新しいウィンドウで開きます)です。Content-Type ヘッダー (新しいウィンドウで開きます)をご覧ください。 |
-dパラメーターでGraphQLクエリを指定します。
query { jobSearch(location: { radius: 5, radiusUnit: MILES, where: "Austin" } what: "Nurse" limit: 5) { results { job { title sourceEmployerName } } }}{ "errors": [{ "message": "The client does not have access to the 'job-retrieval-service' service.", "extensions": { "code": "INTERNAL_SERVER_ERROR" } }], "data": null}その他のタスク
#採用企業のアクセストークンを取得する
#一部の Indeed API では、雇用主または広告主を表すアクセストークンが必要です。以下の手順では、必要に応じて employer を advertiser に置き換えてください。
採用企業のアクセストークンを取得するには、次の手順を実行します。
- ユーザーが管理できる採用企業を一覧表示する選択画面を作成します。
- ユーザーが採用企業を選択したら、その採用企業を表すアクセストークンを取得します。
各アクセストークンは 1 つの雇用主を表します。雇用主を切り替えるには、新しいアクセストークンを取得します。
選択画面を作成する
#-
scope=employer_accessを指定してアクセストークンを取得します。このスコープを使用すると、アプリを登録したアカウントに関連付けられた採用企業アカウントを一覧表示できます。
-
Authorizationヘッダーにアクセストークンを指定して、https://secure.indeed.com/v2/api/appinfoエンドポイントを呼び出します。レスポンスには、ユーザーが管理できる各採用企業アカウントの
idとnameが含まれます。{"employers": [{"id": "084a39249af95beedfb90cc5d2b8833c","name": "Dharma Initiative"},{"id": "865e08b649774436ee1f410b611fad7c","name": "Umbrella Corporation"},{"id": "4bc393648e880bc94dd6cef8efbc8486","name": "US Robotics and Mechanical Men"}]}この例では、US Robotics and Mechanical Men の
idは4bc393648e880bc94dd6cef8efbc8486です。 -
採用企業の一覧を表示し、ユーザーが 1 つ選択できるようにします。
採用企業のアクセストークンを取得する
#ユーザーが採用企業を選択したら、選択された採用企業の ID を指定して、https://apis.indeed.com/oauth/v2/tokens に POST リクエストを送信します。
curl -L 'https://apis.indeed.com/oauth/v2/tokens' \ -H 'Accept: application/json' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'grant_type=client_credentials' \ -d 'scope=employer_access' \ -d 'client_id=<client_id>' \ -d 'client_secret=<client_secret>' \ -d 'employer=<employer_id>'リクエストヘッダーは次のとおりです。
リクエストボディパラメーターは次のとおりです。
| リクエストボディパラメーター | 必須 | 値 |
|---|---|---|
grant_type | ✔ | client_credentials |
scope | ✔ | employer_access |
client_id | ✔ | クライアント ID です。 |
client_secret | ✔ | クライアントシークレットです。 |
employer | ✔ | ユーザーが選択した採用企業の ID です。 |
レスポンスには、選択された採用企業を表すアクセストークンが含まれます。
{ "access_token": "<access_token>", "scope": "employer_access", "token_type": "Bearer", "expires_in": 3600}ユーザーが選択された採用企業を管理していない場合は、次のエラーが返されます。
{ "error_description": "Invalid request", "error": "invalid_request"}自社に代わって動作することをアプリに認可する
#Indeed の Users ページを使用して、自社に代わって動作することをアプリに認可したり、その認可を解除したりします。
- Indeed の Users (新しいウィンドウで開きます) ページで採用企業アカウントを選択し、Add users を選択します。
- ユーザーのメールアドレスを入力し、アクセスレベルを選択します。
- Save and notify new users を選択します。
ユーザーには、Indeed 上でお客様の組織に参加するための招待メールが届きます。ユーザーが承諾すると、選択したアクセスレベルが付与されます。
別の会社が自社に代わって動作できるようにする
#その会社と自社の採用企業 ID を共有します。
採用企業 ID は、Indeed の Users (新しいウィンドウで開きます) ページのフッターの上に小さな文字で表示されます。機密情報ではないため、他社と共有できます。
関連項目
#ガイド
#- 認証情報 — アプリが Indeed のサービスを利用するための OAuth クライアント ID とシークレットについて説明します。
- Basic 認証スキーム —
/oauth/v2/tokensのリクエストボディではなく、ヘッダーでクライアント ID とシークレットを送信する方法を説明します。 - OAuthエラーのトラブルシューティング — Indeed API にアクセスする前に発生する OAuth エラーの修正方法を説明します。
- GraphQL エラーをトラブルシューティングする — GraphQL API が返すエラーの診断方法を説明します。
リファレンス
#- HTTP リクエストヘッダー — OAuth リクエストの HTTP リクエストヘッダーの一覧です。
- oauth/v2/tokens エンドポイント — クライアント ID とシークレットをアクセストークンと交換する方法を説明します。
- v2/api/appinfo エンドポイント — アプリを登録したユーザーアカウントに関連付けられた採用企業を一覧表示する方法を説明します。