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 の使用をご覧ください。