Wymagania wstępne dotyczące interfejsu Indexing API

Zanim zaczniesz korzystać z interfejsu Indexing API, musisz wykonać kilka czynności:

Tworzenie projektu dla klienta

Aby móc wysyłać żądania do interfejsu Indexing API, musisz poinformować Google o swoim kliencie i aktywować dostęp do interfejsu API. W tym celu musisz użyć konsoli interfejsów API Google, by utworzyć projekt, czyli nazwany zbiór ustawień i informacji dostępowych interfejsu API, oraz zarejestrować swoją aplikację.

Aby rozpocząć korzystanie z interfejsu Indexing API, musisz najpierw użyć narzędzia do konfiguracji, które przeprowadzi Cię przez proces tworzenia projektu w Konsoli interfejsów API Google, włączania interfejsu API i tworzenia danych logowania.

Tworzenie konta usługi

  1. Otwórz stronę Konta usługi. Jeśli pojawi się monit, wybierz projekt.
  2. Kliknij Utwórz konto usługi, a potem wpisz jego nazwę i opis. Możesz użyć domyślnego identyfikatora konta usługi lub wybrać inny, unikalny identyfikator. Gdy już to zrobisz, kliknij Utwórz.
  3. Określenie opcji w kolejnej sekcji Uprawnienia konta usługi (opcjonalnie) nie jest wymagane. Kliknij Dalej.
  4. Na ekranie Przyznaj użytkownikom dostęp do tego konta usługi przewiń w dół do sekcji Utwórz klucz. Kliknij Utwórz klucz.
  5. W wyświetlonym panelu bocznym wybierz format klucza – zalecamy JSON.
  6. Kliknij Utwórz. Nowa para kluczy publicznych/prywatnych zostanie wygenerowana i pobrana na Twoje urządzenie. To jedyny egzemplarz tego klucza. Informacje o tym, jak bezpiecznie go przechowywać, znajdziesz w opisie zarządzania kluczami konta usługi.
  7. W oknie Na komputerze zapisano klucz prywatny kliknij Zamknij, a potem kliknij Gotowe, aby powrócić do tabeli z kontami usług.

Dodawanie konta usługi jako właściciela witryny

Aby dodać konto usługi jako właściciela witryny:

  1. Najpierw skorzystaj z Search Console, aby potwierdzić, że witryna należy do Ciebie.
  2. Dodaj konto usługi jako właściciela witryny.

1. Potwierdź, że witryna należy do Ciebie

Zweryfikuj własność witryny za pomocą Search Console. Możesz użyć dowolnej metody weryfikacji obsługiwanej przez Search Console. Możesz utworzyć usługę domeny (example.com) lub usługę z prefiksem URL (https://example.com lub https://example.com/some/path/), która będzie reprezentować Twoją witrynę. Pamiętaj, że w Search Console witryny są nazywane usługami.

2. Przyznaj kontu usługi status właściciela

Potem dodaj konto usługi jako (wyznaczonego) właściciela witryny:

  1. Otwórz Centrum dla webmasterów.
  2. Kliknij usługę, której własność została przez Ciebie zweryfikowana.
  3. Na liście Zweryfikowany właściciel kliknij Dodaj właściciela.
  4. Jako wyznaczonego właściciela wpisz adres e-mail konta usługi. Adres e-mail konta usługi znajdziesz w 2 miejscach:
    • w polu client_email klucza prywatnego JSON pobranego podczas tworzenia projektu,
    • w kolumnie Identyfikator konta usługi w widoku Konta usługi w Developers Console.
    Format adresu e-mail:
    my-service-account@project-name.google.com.iam.gserviceaccount.com
    Przykład: my-service-account@test-project-42.google.com.iam.gserviceaccount.com

Uzyskiwanie tokena dostępu

Każde wywołanie wysłane do interfejsu Indexing API musi być autoryzowane za pomocą tokena OAuth, który dostajesz w zamian za klucz prywatny. Każdy token jest ważny przez określony czas. Google udostępnia biblioteki klienta interfejsu API, które umożliwiają uzyskanie tokenów w wielu językach.

Wymagania

Gdy przesyłasz żądanie do interfejsu Indexing API, musi ono:

  1. Używać zakresu https://www.googleapis.com/auth/indexing.
  2. Używać jednego z punktów końcowych opisanych w artykule Korzystanie z interfejsu API.
  3. Obejmować token dostępu konta usługi.
  4. Określać treść żądania zgodnie z opisem w artykule Korzystanie z interfejsu API.

Przykłady

Te przykłady pokazują, jak uzyskać token dostępu OAuth:

Python

Uzyskuje token dostępu OAuth, używając biblioteki klienta interfejsu API Google dla języka Python:

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

Uzyskuje token dostępu OAuth, używając biblioteki klienta interfejsu API dla języka Java:

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

Uzyskuje token dostępu OAuth, używając biblioteki klienta interfejsu API dla języka PHP:

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

Uzyskuje token dostępu OAuth, używając biblioteki klienta Node.js:

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);
  });
});

Poza sposobem uzyskania tokena przykłady te pokazują też miejsce, w którym można dodać treść komunikatu żądania. Informacje o typach możliwych wywołań i strukturze treści komunikatów tych wywołań znajdziesz w artykule Korzystanie z interfejsu API.