Требования для работы с Indexing API
Перед началом использования Indexing API необходимо выполнить следующие действия:
- Создать проект для клиента
- Создать сервисный аккаунт
- Добавить сервисный аккаунт в качестве владельца сайта
- Получить токен доступа
Как создать проект для клиента
Прежде чем отправлять запросы к Indexing API, сообщите Google о клиенте и активируйте доступ к API. Для этого в Google API Console создайте проект (набор настроек и данных о доступе к API под общим именем) и зарегистрируйте приложение.
Для начала вам необходимо настроить API в Cloud Console: создать проект в Google API Console, включить в нем Indexing API и добавить учетные данные.
Как создать сервисный аккаунт
- Откройте страницу Service accounts (Сервисные аккаунты). При необходимости выберите проект.
- Нажмите Create Service Account (Создать сервисный аккаунт), а затем введите название и описание аккаунта. Вы можете оставить идентификатор, созданный автоматически, или придумать свой собственный. Указав нужную информацию, нажмите Create (Создать).
- Задавать настройки в разделе Service account permissions (Права доступа на уровне сервисного аккаунта) не обязательно. Нажмите Continue (Продолжить).
- Когда откроется страница Grant users access to this service account (Предоставление пользователям доступа к сервисному аккаунту), прокрутите ее вниз до раздела Create key (Создать ключ) и нажмите кнопку Create key (Создать ключ).
- На появившейся боковой панели выберите формат ключа. Рекомендуемый вариант – JSON.
- Нажмите Create (Создать). Будет создана пара ключей (открытый и закрытый), которая затем будет скачана на ваш компьютер. Обратите внимание, что это единственная их копия. Подробнее о том, как безопасно хранить ключи и управлять доступом к ним…
- Выберите Close (Закрыть) в диалоговом окне Private key saved to your computer (Закрытый ключ скачан), а затем нажмите Done (Готово), чтобы вернуться к списку сервисных аккаунтов.
Как добавить сервисный аккаунт в качестве владельца сайта
Выполните следующие действия:
- При помощи Search Console подтвердите, что сайт принадлежит вам.
- Добавьте сервисный аккаунт, созданный на предыдущем этапе, в качестве владельца.
1. Подтвердите, что сайт принадлежит вам
Подтвердите, что вы являетесь владельцем сайта,
любым из способов, доступных в Search Console. Затем создайте доменный ресурс (example.com
) или ресурс с префиксом в URL (https://example.com
или https://example.com/some/path/
).
Ресурсы представляют сайты в Search Console.
2. Предоставьте сервисному аккаунту статус владельца
Добавьте сервисный аккаунт в качестве делегированного владельца сайта. Вот как это сделать:
- Откройте Центр веб-мастеров.
- Выберите ресурс, право собственности на который вы подтвердили.
- В списке Подтвержденные владельцы нажмите Добавить владельца.
- Укажите адрес электронной почты, который связан с сервисным аккаунтом. Ему будут присвоены права делегированного владельца. Где можно найти этот адрес:
- в поле
client_email
в закрытом ключе JSON, скачанном вами при создании проекта; - в столбце Service account ID (Идентификатор сервисного аккаунта) раздела Service Accounts (Сервисные аккаунты) в Developers Console.
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 можно с помощью клиентских библиотек для Google API, предназначенных для разных языков.
Требования
Отправляя запросы к Indexing API, соблюдайте следующие требования:
- Указывайте URL
https://www.googleapis.com/auth/indexing
в качестве области действия. - Используйте только те конечные точки, которые указаны в разделе Использование API.
- Включайте в запросы токен доступа для сервисного аккаунта.
- Описывайте тело запроса согласно требованиям в разделе Использование API.
Примеры
В примерах ниже показаны способы получения токена доступа OAuth.
Python
Получение токена OAuth с помощью клиентской библиотеки API Google для 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
Получение токена OAuth с помощью клиентской библиотеки API Google для 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
Получение токена OAuth с помощью клиентской библиотеки API Google для 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
Получение токена OAuth с помощью клиентской библиотеки для 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); }); });
В этих примерах не только показана процедура получения токена, но и указано, где можно разместить тело запроса. Узнать больше о типах и структуре запросов можно из статьи Использование API.