Indexing API を使用する前提条件
Indexing API を使用するには、事前に以下のことを行っておく必要があります。
クライアントのプロジェクトを作成する
Indexing API にリクエストを送信するには、クライアントについて Google に情報を送信し、API へのアクセス権を有効にする必要があります。そのためには、Google API Console を使用してプロジェクト(設定と API アクセス情報の名前付きコレクション)を作成し、アプリケーションを登録します。
Indexing API を使用するには、まずセットアップ ツールを使用する必要があります。このツールを使って、Google API Console でのプロジェクトの作成、API の有効化、認証情報の作成を指示に沿って行うことができます。
サービス アカウントを作成する
- [サービス アカウント] ページを開きます。画面のメッセージに従って、プロジェクトを選択します。
- [ サービス アカウントを作成] をクリックして、サービス アカウントの名前と説明を入力します。デフォルトのサービス アカウント ID を使用することも、別の一意の ID を選択することもできます。入力したら、[作成] をクリックします。
- 以降の [サービス アカウントの権限(オプション)] セクションは必須ではありません。[続行] をクリックします。
- [ユーザーにこのサービス アカウントへのアクセスを許可] 画面で、[キーの作成] セクションまで下にスクロールします。[ キーを作成] をクリックします。
- 表示されたサイドパネルで、キーの形式を選択します。JSON をおすすめします。
- [作成] をクリックします。新しい公開鍵と秘密鍵のペアが生成され、パソコンにダウンロードされます。この鍵は再発行できませんので、安全に保管する方法については、サービス アカウント キーの管理をご覧ください。
- [秘密鍵がパソコンに保存されました] ダイアログで [閉じる] をクリックし、[完了] をクリックしてサービス アカウントの表に戻ります。
お使いのサービス アカウントをサイト所有者として追加する
お使いのサービス アカウントをサイト所有者として追加するには:
- まず、Search Console を使用して、サイトを所有していることを証明します。
- その後、お使いのサービス アカウントを所有者として追加します。
1. サイトを所有していることを証明する
Search Console を使用してサイトの所有権を確認します。Search Console でサポートされている確認方法を使用できます。サイトを表すドメイン プロパティ(example.com
)または URL プレフィックス プロパティ(https://example.com
または https://example.com/some/path/
)を作成できます(Search Console では、サイトは「プロパティ」と呼ばれます)。
2. お使いのサービス アカウントに所有者ステータスを付与する
次に、お使いのサービス アカウントを(委任された)サイト所有者として追加します。
- ウェブマスター セントラルを開きます。
- 所有権を証明したプロパティをクリックします。
- [確認済みの所有者] のリストで [サイト所有者を追加] をクリックします。
- お使いのサービス アカウントのメールアドレスを、委任された所有者として指定します。サービス アカウントのメールアドレスは、次の 2 か所で確認できます。
- プロジェクトの作成時にダウンロードした JSON 秘密鍵の
client_email
フィールド - Developers Console の [サービス アカウント] ビューの [サービス アカウント ID] 列
my-service-account@project-name.google.com.iam.gserviceaccount.com
例: my-service-account@test-project-42.google.com.iam.gserviceaccount.com - プロジェクトの作成時にダウンロードした JSON 秘密鍵の
アクセス トークンを取得する
Indexing API の呼び出しはすべて、OAuth トークンを使用して認証する必要があります。OAuth トークンは、秘密鍵と引き換えに取得します。各トークンは一定の期間有効です。各種言語用の OAuth トークンは、Google が提供している API クライアント ライブラリを使用して取得できます。
要件
Indexing API にリクエストを送信する場合、リクエストは次の条件を満たす必要があります。
- スコープに
https://www.googleapis.com/auth/indexing
を使用する。 - API の使用で説明されているエンドポイントのいずれかを使用する。
- サービス アカウントのアクセス トークンを含む。
- API の使用で説明されているようにリクエストの本文を定義する。
例
次の例は、OAuth アクセス トークンを取得する方法を示しています。
Python
Python 用 Google API クライアント ライブラリを使用して OAuth トークンを取得する:
from oauth2client.service_account import ServiceAccountCredentials import httplib2 SCOPES = [ "https://www.googleapis.com/auth/indexing" ] ENDPOINT = "https://indexing.googleapis.com/v3/urlNotifications:publish" # service_account_file.json is the private key that you created for your service account. JSON_KEY_FILE = "service_account_file.json" credentials = ServiceAccountCredentials.from_json_keyfile_name(JSON_KEY_FILE, scopes=SCOPES) http = credentials.authorize(httplib2.Http()) # Define contents here as a JSON string. # This example shows a simple update request. # Other types of requests are described in the next step. content = """{ \"url\": \"http://example.com/jobs/42\", \"type\": \"URL_UPDATED\" }""" response, content = http.request(ENDPOINT, method="POST", body=content)
Java
Java 用 API クライアント ライブラリを使用して OAuth トークンを取得する:
String scopes = "https://www.googleapis.com/auth/indexing"; String endPoint = "https://indexing.googleapis.com/v3/urlNotifications:publish"; JsonFactory jsonFactory = new JacksonFactory(); // service_account_file.json is the private key that you created for your service account. InputStream in = IOUtils.toInputStream("service_account_file.json"); GoogleCredential credentials = GoogleCredential.fromStream(in, this.httpTransport, jsonFactory).createScoped(Collections.singleton(scopes)); GenericUrl genericUrl = new GenericUrl(endPoint); HttpRequestFactory requestFactory = this.httpTransport.createRequestFactory(); // Define content here. The structure of the content is described in the next step. String content = "{" + "\"url\": \"http://example.com/jobs/42\"," + "\"type\": \"URL_UPDATED\"," + "}"; HttpRequest request = requestFactory.buildPostRequest(genericUrl, ByteArrayContent.fromString("application/json", content)); credentials.initialize(request); HttpResponse response = request.execute(); int statusCode = response.getStatusCode();
PHP
PHP 用 API クライアント ライブラリを使用して OAuth トークンを取得する:
require_once 'google-api-php-client/vendor/autoload.php'; $client = new Google_Client(); // service_account_file.json is the private key that you created for your service account. $client->setAuthConfig('service_account_file.json'); $client->addScope('https://www.googleapis.com/auth/indexing'); // Get a Guzzle HTTP Client $httpClient = $client->authorize(); $endpoint = 'https://indexing.googleapis.com/v3/urlNotifications:publish'; // Define contents here. The structure of the content is described in the next step. $content = '{ "url": "http://example.com/jobs/42", "type": "URL_UPDATED" }'; $response = $httpClient->post($endpoint, [ 'body' => $content ]); $status_code = $response->getStatusCode();
Node.js
Node.js クライアント ライブラリを使用して OAuth トークンを取得する:
var request = require("request"); var { google } = require("googleapis"); var key = require("./service_account.json"); const jwtClient = new google.auth.JWT( key.client_email, null, key.private_key, ["https://www.googleapis.com/auth/indexing"], null ); jwtClient.authorize(function(err, tokens) { if (err) { console.log(err); return; } let options = { url: "https://indexing.googleapis.com/v3/urlNotifications:publish", method: "POST", // Your options, which must include the Content-Type and auth headers headers: { "Content-Type": "application/json" }, auth: { "bearer": tokens.access_token }, // Define contents here. The structure of the content is described in the next step. json: { "url": "http://example.com/jobs/42", "type": "URL_UPDATED" } }; request(options, function (error, response, body) { // Handle the response console.log(body); }); });
これらの例には、トークンを取得する方法だけでなく、リクエスト メッセージの本文を追加できる場所も示されています。実行可能な呼び出しのタイプ、およびそれらの呼び出しのメッセージ本文の構造について詳しくは、API の使用をご覧ください。