Wymagania wstępne dotyczące interfejsu Indexing API
Zanim zaczniesz korzystać z interfejsu Indexing API, musisz wykonać kilka czynności:
- utworzyć projekt dla klienta,
- utworzyć konto usługi,
- dodać konto usługi jako właściciela witryny,
- uzyskać token dostępu.
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
- Otwórz stronę Konta usługi. Jeśli pojawi się monit, wybierz projekt.
- 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.
- Określenie opcji w kolejnej sekcji Uprawnienia konta usługi (opcjonalnie) nie jest wymagane. Kliknij Dalej.
- Na ekranie Przyznaj użytkownikom dostęp do tego konta usługi przewiń w dół do sekcji Utwórz klucz. Kliknij Utwórz klucz.
- W wyświetlonym panelu bocznym wybierz format klucza – zalecamy JSON.
- 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.
- 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:
- Najpierw skorzystaj z Search Console, aby potwierdzić, że witryna należy do Ciebie.
- 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:
- Otwórz Centrum dla webmasterów.
- Kliknij usługę, której własność została przez Ciebie zweryfikowana.
- Na liście Zweryfikowany właściciel kliknij Dodaj właściciela.
- 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.
my-service-account@project-name.google.com.iam.gserviceaccount.com
Przykład: my-service-account@test-project-42.google.com.iam.gserviceaccount.com - w polu
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:
- Używać zakresu
https://www.googleapis.com/auth/indexing
. - Używać jednego z punktów końcowych opisanych w artykule Korzystanie z interfejsu API.
- Obejmować token dostępu konta usługi.
- 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.