Indexing API を使用する前提条件

Indexing API を使用するには、事前に以下のことを行っておく必要があります。

クライアントのプロジェクトを作成する

Indexing API にリクエストを送信するには、クライアントについて Google に情報を送信し、API へのアクセス権を有効にする必要があります。そのためには、Google API Console を使用してプロジェクト(設定と API アクセス情報の名前付きコレクション)を作成し、アプリケーションを登録します。

Indexing API を使用するには、まずセットアップ ツールを使用する必要があります。このツールを使って、Google API Console でのプロジェクトの作成、API の有効化、認証情報の作成を指示に沿って行うことができます。

サービス アカウントを作成する

  1. [サービス アカウント] ページを開きます。画面のメッセージに従って、プロジェクトを選択します。
  2. [ サービス アカウントを作成] をクリックして、サービス アカウントの名前と説明を入力します。デフォルトのサービス アカウント ID を使用することも、別の一意の ID を選択することもできます。入力したら、[作成] をクリックします。
  3. 以降の [サービス アカウントの権限(オプション)] セクションは必須ではありません。[続行] をクリックします。
  4. [ユーザーにこのサービス アカウントへのアクセスを許可] 画面で、[キーの作成] セクションまで下にスクロールします。[ キーを作成] をクリックします。
  5. 表示されたサイドパネルで、キーの形式を選択します。JSON をおすすめします。
  6. [作成] をクリックします。新しい公開鍵と秘密鍵のペアが生成され、パソコンにダウンロードされます。この鍵は再発行できませんので、安全に保管する方法については、サービス アカウント キーの管理をご覧ください。
  7. [秘密鍵がパソコンに保存されました] ダイアログで [閉じる] をクリックし、[完了] をクリックしてサービス アカウントの表に戻ります。

お使いのサービス アカウントをサイト所有者として追加する

お使いのサービス アカウントをサイト所有者として追加するには:

  1. まず、Search Console を使用して、サイトを所有していることを証明します。
  2. その後、お使いのサービス アカウントを所有者として追加します。

1. サイトを所有していることを証明する

Search Console を使用してサイトの所有権を確認します。Search Console でサポートされている確認方法を使用できます。サイトを表すドメイン プロパティ(example.com)または URL プレフィックス プロパティ(https://example.com または https://example.com/some/path/)を作成できます(Search Console では、サイトは「プロパティ」と呼ばれます)。

2. お使いのサービス アカウントに所有者ステータスを付与する

次に、お使いのサービス アカウントを(委任された)サイト所有者として追加します。

  1. ウェブマスター セントラルを開きます。
  2. 所有権を証明したプロパティをクリックします。
  3. [確認済みの所有者] のリストで [サイト所有者を追加] をクリックします。
  4. お使いのサービス アカウントのメールアドレスを、委任された所有者として指定します。サービス アカウントのメールアドレスは、次の 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

アクセス トークンを取得する

Indexing API の呼び出しはすべて、OAuth トークンを使用して認証する必要があります。OAuth トークンは、秘密鍵と引き換えに取得します。各トークンは一定の期間有効です。各種言語用の OAuth トークンは、Google が提供している API クライアント ライブラリを使用して取得できます。

要件

Indexing API にリクエストを送信する場合、リクエストは次の条件を満たす必要があります。

  1. スコープに https://www.googleapis.com/auth/indexing を使用する。
  2. API の使用で説明されているエンドポイントのいずれかを使用する。
  3. サービス アカウントのアクセス トークンを含む。
  4. 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 の使用をご覧ください。