Google indexing api 403 ошибка

Оптимизируйте свои подборки

Сохраняйте и классифицируйте контент в соответствии со своими настройками.

В этом документе указаны некоторые коды ошибок и сообщения о них, получаемые от API Google. В список включены те ошибки, которые относятся к глобальному (используемому по умолчанию) домену для API Google. Многие API также определяют собственные домены, в которых могут быть свои ошибки, отсутствующие в глобальном домене. У таких ошибок в ответе JSON будет указано значение свойства domain, относящееся к конкретному API, например youtube.parameter.

На этой странице перечислены ошибки, систематизированные по кодам статуса HTTP, определения которых приведены в спецификации RFC 7231.

Вот пример ответа JSON, передающего информацию об ошибке, относящейся к глобальному домену:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "invalidParameter",
    "message": "Invalid string value: 'asdf'. Allowed values: [mostpopular]",
    "locationType": "parameter",
    "location": "chart"
   }
  ],
  "code": 400,
  "message": "Invalid string value: 'asdf'. Allowed values: [mostpopular]"
 }
}

Ошибки

  1. MOVED_PERMANENTLY (301)
  2. SEE_OTHER (303)
  3. NOT_MODIFIED (304)
  4. TEMPORARY_REDIRECT (307)
  5. BAD_REQUEST (400)
  6. UNAUTHORIZED (401)
  7. PAYMENT_REQUIRED (402)
  8. FORBIDDEN (403)
  9. NOT_FOUND (404)
  10. METHOD_NOT_ALLOWED (405)
  11. CONFLICT (409)
  12. GONE (410)
  13. PRECONDITION_FAILED (412)
  14. REQUEST_ENTITY_TOO_LARGE (413)
  15. REQUESTED_RANGE_NOT_SATISFIABLE (416)
  16. EXPECTATION_FAILED (417)
  17. PRECONDITION_REQUIRED (428)
  18. TOO_MANY_REQUESTS (429)
  19. INTERNAL_SERVER_ERROR (500)
  20. NOT_IMPLEMENTED (501)
  21. SERVICE_UNAVAILABLE (503)

MOVED_PERMANENTLY (301)

Код ошибки Описание
movedPermanently Запрос был отправлен на URL, который больше нельзя использовать. Все запросы для той же операции теперь необходимо отправлять на URL, указанный в заголовке Location полученного ответа.

SEE_OTHER (303)

Код ошибки Описание
seeOther Запрос успешно обработан. Чтобы получить ответ, отправьте запрос GET на URL, указанный в заголовке Location.
mediaDownloadRedirect Запрос успешно обработан. Чтобы получить ответ, отправьте запрос GET на URL, указанный в заголовке Location.

NOT_MODIFIED (304)

Код ошибки Описание
notModified Условие, заданное для заголовка If-None-Match, не было выполнено. Этот ответ означает, что запрошенный документ не был изменен и что должен быть получен кешированный ответ. Проверьте значение заголовка If-None-Match в HTTP-запросе.

TEMPORARY_REDIRECT (307)

Код ошибки Описание
temporaryRedirect Чтобы ваш запрос был обработан, повторно отправьте его на URL, указанный в заголовке Location этого ответа.

BAD_REQUEST (400)

Код ошибки Описание
badRequest Запрос к API недействителен или неправильно сформирован. Поэтому сервер API не может его распознать.
badBinaryDomainRequest Двоичный запрос к домену недействителен.
badContent Тип данных запроса или тип контента части пакетного запроса не поддерживается.
badLockedDomainRequest Запрос к заблокированному домену недействителен.
corsRequestWithXOrigin Запрос CORS содержит заголовок X-Origin XD3, то есть этот запрос составлен неправильно.
endpointConstraintMismatch Обработать запрос не удалось, так как он не соответствует указанному API. Убедитесь, что вы указали правильный URL.
invalid Обработать запрос не удалось, так как он содержал недопустимое значение. Это может быть значение параметра, заголовка или свойства.
invalidAltValue В значении параметра alt указан неизвестный формат вывода.
invalidHeader Обработать запрос не удалось, так как он содержал недопустимый заголовок.
invalidParameter Обработать запрос не удалось, так как он содержал недопустимый параметр или значение параметра. Чтобы определить, какие параметры можно использовать для запроса, изучите документацию API.
invalidQuery Запрос недействителен. Узнайте, какие параметры можно использовать для запроса, и убедитесь, что запрос не содержит недопустимую комбинацию параметров или недействительные значения параметров. Для этого изучите документацию API. Проверьте значение параметра q.
keyExpired Срок действия ключа API, указанного в запросе, истек. Это означает, что сервер API не может проверить лимит квоты для приложения, отправляющего запрос. Чтобы узнать больше или получить новый ключ, перейдите в Google Developers Console.
keyInvalid Указанный в запросе ключ API недействителен. Это означает, что сервер API не может проверить лимит квоты для приложения, отправляющего запрос. Попробуйте найти ключ с помощью Google Developers Console или получите новый.
lockedDomainCreationFailure Токен OAuth был получен в строке запроса. API запрещает это для всех форматов ответа, кроме JSON и XML. Попробуйте отправить токен OAuth в заголовке Authorization.
notDownload На URL типа /download/* могут быть отправлены только запросы на скачивание мультимедиа. Отправьте запрос на тот же адрес, но без префикса /download.
notUpload На URI с префиксом /upload/* можно отправлять только запросы на загрузку. Ваш запрос не относится к их числу, поэтому обработать его не удалось. Отправьте запрос на тот же адрес, но без префикса /upload.
parseError Сервер API не может обработать тело запроса.
required В запросе отсутствует обязательная информация. Возможно, это параметр или свойство ресурса.
tooManyParts Обработать пакетный запрос не удалось, так как в нем слишком много частей.
unknownApi API, к которому обращается запрос, не распознан.
unsupportedMediaProtocol Медиапротокол клиента не поддерживается.
unsupportedOutputFormat В значении параметра alt указан формат вывода, который не поддерживается этим сервисом. Проверьте значение параметра запроса alt.
wrongUrlForUpload Обработать запрос на загрузку не удалось из-за неправильного URI. Такие запросы можно отправлять только на URI с префиксом /upload/*. Отправьте запрос на тот же адрес, но с префиксом /upload.
Код ошибки Описание
unauthorized У пользователя нет прав для выполнения этого запроса.
authError Для запроса указаны неправильные учетные данные. Проверьте значение заголовка Authorization в HTTP-запросе.
expired Время сеанса истекло. Проверьте значение заголовка Authorization в HTTP-запросе.
lockedDomainExpired Обработать запрос не удалось, так как истек срок действия заблокированного домена.
required Для выполнения этого запроса к API пользователю необходимо войти в систему. Проверьте значение заголовка Authorization в HTTP-запросе.

PAYMENT_REQUIRED (402)

Код ошибки Описание
dailyLimitExceeded402 Достигнут дневной лимит бюджета, установленный разработчиком.
quotaExceeded402 Для запрошенной операции необходимо больше ресурсов, чем доступно по квоте. Чтобы выполнить эту операцию, требуется платеж.
user402 Чтобы выполнить запрошенную операцию, требуется платеж от аутентифицированного пользователя.

FORBIDDEN (403)

Код ошибки Описание
forbidden Запрошенная операция запрещена, и ее нельзя завершить.
accessNotConfigured Для вашего проекта не настроен доступ к этому API. Активируйте API для проекта в Google Developers Console.
accessNotConfigured Проект заблокирован из-за нарушения правил. См. http://support.google.com/code/go/developer_compliance.
accessNotConfigured Проект подлежит удалению.
accountDeleted Аккаунт, связанный с указанными в запросе учетными данными, был удален. Проверьте значение заголовка Authorization в HTTP-запросе.
accountDisabled Аккаунт, связанный с указанными в запросе учетными данными, был отключен. Проверьте значение заголовка Authorization в HTTP-запросе.
accountUnverified Адрес электронной почты пользователя, делающего запрос, не подтвержден. Проверьте значение заголовка Authorization в HTTP-запросе.
concurrentLimitExceeded Обработать запрос не удалось, так как достигнут лимит параллельных соединений.
dailyLimitExceeded Достигнут ежедневный лимит квоты для API.
dailyLimitExceeded Достигнут ежедневный лимит квоты, и проект заблокирован из-за нарушения правил. Подробную информацию можно найти на форуме поддержки по правилам API Google.
dailyLimitExceededUnreg Обработать запрос не удалось, так как достигнут предел анонимного использования API в день. Чтобы продолжить работу с API, войдите в Google Developers Console.
downloadServiceForbidden API не поддерживает скачивание.
insufficientAudience Запрос не может быть выполнен для этой аудитории.
insufficientAuthorizedParty Запрос не может быть выполнен для этого приложения.
insufficientPermissions У аутентифицированного пользователя недостаточно прав для выполнения этого запроса.
limitExceeded Запрос нельзя выполнить из-за ограничений по доступу или частоте.
lockedDomainForbidden API не поддерживает заблокированные домены.
quotaExceeded Для запрошенной операции необходимо больше ресурсов, чем доступно по квоте.
rateLimitExceeded В течение определенного промежутка времени было отправлено слишком много запросов.
rateLimitExceededUnreg Превышен лимит частоты запросов. Чтобы продолжить использование API, зарегистрируйте приложение. Для этого создайте аккаунт, используя Google Developers Console.
responseTooLarge Невозможно получить запрошенный ресурс, так как его размер слишком велик.
servingLimitExceeded Достигнут лимит на частоту запросов для этого API.
sslRequired Эта операция возможна только с применением SSL.
unknownAuth Сервер API не распознает схему авторизации, используемую для запроса. Проверьте значение заголовка Authorization в HTTP-запросе.
userRateLimitExceeded Обработать запрос не удалось, так как частота запросов от этого пользователя превышает допустимую.
userRateLimitExceededUnreg Обработать запрос не удалось, так как достигнут предел частоты запросов от этого пользователя и в запросе не указан разработчик клиента. Создайте проект для вашего приложения в Google Developer Console (https://console.developers.google.com).
variableTermExpiredDailyExceeded Обработать запрос не удалось, так как истек срок действия временной квоты и была исчерпана стандартная дневная.
variableTermLimitExceeded Обработать запрос не удалось, так как была исчерпана временная квота, действующая в указанный период.

NOT_FOUND (404)

Код ошибки Описание
notFound Не удалось выполнить операцию, так как не найден ресурс, указанный в запросе.
notFound Не найден ресурс, указанный в запросе. Если вы не пользовались этим API в последние две недели, выполните повторное развертывание приложения App Engine и попробуйте вызвать API ещё раз.
unsupportedProtocol Не поддерживается протокол, используемый в запросе.

METHOD_NOT_ALLOWED (405)

Код ошибки Описание
httpMethodNotAllowed Не поддерживается метод HTTP, связанный с запросом.

CONFLICT (409)

Код ошибки Описание
conflict Не удалось выполнить запрос к API, так как запрошенная операция может вызвать конфликт с уже существующим объектом. Например, это случается, если запрашивается создание повторяющегося элемента, однако при таких конфликтах, как правило, ошибки диагностируются более конкретно.
duplicate Не удалось выполнить запрошенную операцию, так как она требует создания уже существующего ресурса.

GONE (410)

Код ошибки Описание
deleted Обработать запрос не удалось, так как указанный в нем ресурс был удален.

PRECONDITION_FAILED (412)

Код ошибки Описание
conditionNotMet Не было выполнено условие, заданное для заголовка If-Match или If-None-Match в HTTP-запросе. Чтобы узнать больше, прочитайте раздел ETag спецификации HTTP. Проверьте значение заголовка If-Match.

REQUEST_ENTITY_TOO_LARGE (413)

Код ошибки Описание
backendRequestTooLarge Слишком большой запрос.
batchSizeTooLarge Пакетный запрос содержит слишком много элементов.
uploadTooLarge Обработать запрос не удалось, так как в нем слишком много данных.

REQUESTED_RANGE_NOT_SATISFIABLE (416)

Код ошибки Описание
requestedRangeNotSatisfiable В запросе указан недопустимый диапазон.

EXPECTATION_FAILED (417)

Код ошибки Описание
expectationFailed Сервер не может выполнить запрос клиента.

PRECONDITION_REQUIRED (428)

Код ошибки Описание
preconditionRequired Запрос должен содержать условие. Укажите в запросе заголовки If-Match или If-None-Match, чтобы он был успешно обработан.

TOO_MANY_REQUESTS (429)

Код ошибки Описание
rateLimitExceeded В течение определенного промежутка времени отправлено слишком много запросов.

INTERNAL_SERVER_ERROR (500)

Код ошибки Описание
internalError Не удалось обработать запрос из-за внутренней ошибки.

NOT_IMPLEMENTED (501)

Код ошибки Описание
notImplemented Запрошенная операция не была реализована.
unsupportedMethod Обработать запрос не удалось, так как для этого необходимо выполнить неизвестный метод или операцию.

SERVICE_UNAVAILABLE (503)

Код ошибки Описание
backendError Произошла ошибка серверного кода.
backendNotConnected Обработать запрос не удалось из-за ошибки подключения.
notReady Сервер API не готов принимать запросы.

Ошибки, связанные непосредственно с Indexing API

Во всех описанных ниже ситуациях запрос отклоняется, а Googlebot не сканирует соответствующий URL. То же происходит в случае основных ошибок.

BAD_REQUEST (400)

Сообщение об ошибке Описание
Missing attribute. 'url' attribute is required. Пользователь не указал URL в запросе.
Invalid attribute. 'url' is not in standard URL format Пользователь ввел некорректный URL, например «abcd».
Unknown type. 'type' attribute is required and must be 'URL_REMOVED' or 'URL_UPDATED'. Пользователь не указал тип уведомления.
Invalid value at 'url_notification.type' (TYPE_ENUM) Пользователь указал в типе уведомления не URL_REMOVED или URL_UPDATED, а другое значение.

FORBIDDEN (403)

Сообщение об ошибке Описание
Permission denied. Failed to verify the URL ownership. Пользователь не прошел процедуру подтверждения права собственности или пытается обновить URL, который ему не принадлежит.

TOO_MANY_REQUESTS (429)

Сообщение об ошибке Описание
Insufficient tokens for quota 'indexing.googleapis.com/default_requests' Пользователь исчерпал свою квоту Indexing API.

Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons «С указанием авторства 4.0», а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.

Последнее обновление: 2023-02-22 UTC.

I am making a call to the google indexing API for job postings:

private $client;
private $httpClient;

public function initClient($kernel)
{
    $this->client = new Google_Client();
    $this->client->setAuthConfig(JSON_KEY_HERE);
    $this->client->addScope('https://www.googleapis.com/auth/indexing');
    $this->httpClient = $this->client->authorize();
}

public function sendJob()
{
    $endpoint = 'https://indexing.googleapis.com/v3/urlNotifications:publish';
    $content = "{
                    "url": "URL_HERE",
                    "type": "URL_UPDATED"
                }";

    $response = $this->httpClient->post($endpoint, array('body' => $content));
}

When making the call to the API, the response given is ‘403 — Forbidden’
.

Any ideas what this error actually means? I have created the service account correctly but cannot replicate success from my dev enviroment.

tehhowch's user avatar

tehhowch

9,6074 gold badges24 silver badges42 bronze badges

asked Jul 19, 2018 at 15:52

Joe Saunderson's user avatar

4

After couple days of headache, here is the answer. Open your Google search console.

Prerequisite: You must already have a google service account

click the tri dot button, and click manage property owners:

click the tri dot button, and click manage property owners

add google service account email as new owners:

add google service account email as new owners

U13-Forward's user avatar

U13-Forward

68.5k14 gold badges87 silver badges109 bronze badges

answered Feb 12, 2020 at 9:05

kopi's user avatar

kopikopi

1592 silver badges4 bronze badges

«Make sure that you have added the service account as an Owner in Google Search Console»

Yep. Use the following code snippet to examine the body response for a more detailed error msg.

    var body = result.Content.ReadAsStringAsync().Result;

if the error msg looks like the following, then this is the same problem.

«message»: «Permission denied. Failed to verify the URL ownership.»

Worth noting: The new version of the search console is lacking. At the bottom of the left-hand menu is a «go to the old version» link. Click this and then select «verification details» from the gear menu (upper right). Next, click on the link that says «verification details» (seriously!). Here, you will finally see a list of verified owners at the bottom of the page. You can add a new owner here, using the email address of your service account (addr can also be found in your json key file).

answered Nov 8, 2018 at 1:51

JM.'s user avatar

JM.JM.

67812 silver badges23 bronze badges

5

Adding to @Glennstar’s comment and @JMs reply there is no longer the old version link (perhaps I never had the old version) but if you click the 3 vertical dots to the right of user owner ‘(you)’ and select ‘manage property owners’ then on the next page click each of the ‘verification details’ links to the right of your domain variations (example.com, http://www.example.com, https://www.example.com etc or whatever you have) and add the owner ie paste in the gserviceaccount.com email address from the json it will then say ownership delegated by current owner to that email address as well.

Once status of that email address had changed from ‘full’ permission to ‘owner’ back on the search console page I could then run the call fine and the original 403 error about being unable to verify URL ownership was gone. Thanks guys, would have been clueless without this.

answered Apr 23, 2019 at 9:09

edindubai's user avatar

edindubaiedindubai

1511 silver badge8 bronze badges

Make sure that you have added the service account as an Owner in Google Search Console as described here: https://developers.google.com/search/apis/indexing-api/v3/prereqs#verify-site.

My problem was that we had multiple entries for the domain in the Search Console (with and without www and with and without https); after adding the service account as an owner to all 4 entries it’s working.

answered Aug 2, 2018 at 15:26

MarcGuay's user avatar

MarcGuayMarcGuay

7188 silver badges14 bronze badges

I struggled with this today the whole day… the solution was that i forgot to activate the indexer api in the google cloud console.

answered May 16, 2022 at 18:07

HackReb's user avatar

HackRebHackReb

1091 silver badge5 bronze badges

I’m trying to use the Google Indexing API using the PHP client library.

This is my code:

    $client = new Google_Client();

    //use the private key that we created for our service account.
    $client->setAuthConfig(storage_path('google_auth_config.json'));    //this works
    $client->addScope('https://www.googleapis.com/auth/indexing');

    // Get a Guzzle HTTP Client
    $httpClient = $client->authorize();
    $endpoint = 'https://indexing.googleapis.com/v3/urlNotifications:publish';

    $content = '{
      "url": "https://myverifieddomain.com/url",
      "type": "URL_UPDATED"
    }';

    $response = $httpClient->post($endpoint, [ 'body' => $content ]);
    $status_code = $response->getStatusCode();

The auth part works.

However, the $status_code I get is 403. Here’s the full $response:

object(GuzzleHttpPsr7Response)#2233 (6) {
  ["reasonPhrase":"GuzzleHttpPsr7Response":private]=>
  string(9) "Forbidden"
  ["statusCode":"GuzzleHttpPsr7Response":private]=>
  int(403)
  ["headers":"GuzzleHttpPsr7Response":private]=>
  array(11) {
    ["Vary"]=>
    array(3) {
      [0]=>
      string(8) "X-Origin"
      [1]=>
      string(7) "Referer"
      [2]=>
      string(22) "Origin,Accept-Encoding"
    }
    ["Content-Type"]=>
    array(1) {
      [0]=>
      string(31) "application/json; charset=UTF-8"
    }
    ["Date"]=>
    array(1) {
      [0]=>
      string(29) "Fri, 24 Jun 2022 10:26:02 GMT"
    }
    ["Server"]=>
    array(1) {
      [0]=>
      string(3) "ESF"
    }
    ["Cache-Control"]=>
    array(1) {
      [0]=>
      string(7) "private"
    }
    ["X-XSS-Protection"]=>
    array(1) {
      [0]=>
      string(1) "0"
    }
    ["X-Frame-Options"]=>
    array(1) {
      [0]=>
      string(10) "SAMEORIGIN"
    }
    ["X-Content-Type-Options"]=>
    array(1) {
      [0]=>
      string(7) "nosniff"
    }
    ["Alt-Svc"]=>
    array(1) {
      [0]=>
      string(162) "h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43""
    }
    ["Accept-Ranges"]=>
    array(1) {
      [0]=>
      string(4) "none"
    }
    ["Transfer-Encoding"]=>
    array(1) {
      [0]=>
      string(7) "chunked"
    }
  }
  ["headerNames":"GuzzleHttpPsr7Response":private]=>
  array(11) {
    ["vary"]=>
    string(4) "Vary"
    ["content-type"]=>
    string(12) "Content-Type"
    ["date"]=>
    string(4) "Date"
    ["server"]=>
    string(6) "Server"
    ["cache-control"]=>
    string(13) "Cache-Control"
    ["x-xss-protection"]=>
    string(16) "X-XSS-Protection"
    ["x-frame-options"]=>
    string(15) "X-Frame-Options"
    ["x-content-type-options"]=>
    string(22) "X-Content-Type-Options"
    ["alt-svc"]=>
    string(7) "Alt-Svc"
    ["accept-ranges"]=>
    string(13) "Accept-Ranges"
    ["transfer-encoding"]=>
    string(17) "Transfer-Encoding"
  }
  ["protocol":"GuzzleHttpPsr7Response":private]=>
  string(3) "1.1"
  ["stream":"GuzzleHttpPsr7Response":private]=>
  object(GuzzleHttpPsr7Stream)#2221 (7) {
    ["stream":"GuzzleHttpPsr7Stream":private]=>
    resource(767) of type (stream)
    ["size":"GuzzleHttpPsr7Stream":private]=>
    NULL
    ["seekable":"GuzzleHttpPsr7Stream":private]=>
    bool(true)
    ["readable":"GuzzleHttpPsr7Stream":private]=>
    bool(true)
    ["writable":"GuzzleHttpPsr7Stream":private]=>
    bool(true)
    ["uri":"GuzzleHttpPsr7Stream":private]=>
    string(10) "php://temp"
    ["customMetadata":"GuzzleHttpPsr7Stream":private]=>
    array(0) {
    }
  }
}

I’ve enabled the API as instructed here.

The service account is added as an owner as instructed here.

I have no idea what else I can do. The error message doesn’t appear to have any additional information.

Search Console Help

Sign in

Google Help

  • Help Center
  • Community
  • Search Console
  • Privacy Policy
  • Terms of Service
  • Submit feedback

Send feedback on…

This help content & information

General Help Center experience

  • Help Center
  • Community

Search Console

Долгое время головной болью вебмастеров было уведомление Google о том, что какие-то странички на их сайте появились или исчезли. Теперь тихо и без особых фанфар появилась такая фича, как Google Indexing API. Сам Google сообщает

Цитата:

На данный момент Google Indexing API может сканировать страницы с структурированными данными JobPosting или BroadcastEvent, которые встроены в VideoObject

Фактически же это хорошая замена канувшим уже в лету и плохо работающим пингерам, которые я все равно еще не отключал… Приходит бот и ладно…

Но, вернемся к Google Indexing API.

Во-первых, подчеркну, что работает API для всех страниц. По крайней мере, у меня никаких JobPosting нет, только Article, но странички заходят влет.

Во-вторых, не ожидайте напихать в индекс мусор. Бот придет, страничку подберет, а потом может и выкинуть. Все правила, распространяющиеся на запрос индексации в консоли, распространяются и на API.

Вот основная справка:

Да, от sitemap отказываться все равно не рекомендую. Не путайтесь, что вам там рассказывают по ссылке выше.

Необходимо создать проект и сервисную учетку. Она будет конских размеров и к вашему емейлу отношения иметь не будет. Да, на учетках GSuite все тоже замечательно работает. В смысле, что авторизоваться для настройки всего этого счастья можно и из под GSuite-учетки. Я когда упирался, собирался уже найти свою старую гугловую учетку, вот это делать не надо.

Создадите учетку, главное, что нужно сделать — получить JSON-файлик этой самой учетки и, 100 раз подчеркиваю, учетку добавить в Search Console, как владельца(!) не полную, а именно владельца. Иначе Google Indexing API будет выдавать вам ошибку 403, доводя до отчаяния и матов, как меня.

Все описания, которые сейчас есть в интернете, описывают, как добавить владельца в старой версии консоли. Я решил этот квест за вас. Заходите в , но не спешите жмакать в «Добавить пользователя». У вас есть владелец уже в списке, вот тыкайте в три точки справа от надписи «Владелец»

это как раз то, что вам нужно. Вот в том разделе и добавьте делегированного владельца, ту сервисную учетку, которую вы завели раньше.

Дальше все достаточно просто, кидаете себе на хост где-то файлик (я использую 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": "https://olegon.ru",
  "type": "URL_UPDATED"
}';

$response = $httpClient->post($endpoint, [ 'body' => $content ]);
$status_code = $response->getStatusCode();

Кто бы что ни придумывал, на HTTPS ресурсы работают замечательно. В setAuthConfig укажете путь к файлику, который вы получили раньше, при заведении сервисной учетки. Все, больше ничего не надо. Можете $status_code себе выводить на первое время. Никакие приседания и дополнительные авторизации не требуются, в т.ч. через Oauth2, как я сначала искал. В $status_code должно быть 200, если заявка на индексирование принята.

Некоторый геморрой я получил при попытке зацепить библиотечку на которой вышеуказанный пример работает. Дело в том, что на данный момент релизнулась версия 2.6, однако, к моему удивлению, ни git clone, ни прямое скачивание по линкам исходников версии не давали полный комплект файлов. Все время чего-то не хватало. Так вот, чтобы хватало, берите 2.5 и конкретно файл google-api-php-client-2.5.0.zip оттуда, а не исходники.

Необходимо упомянуть, что я еще включил API в консоли точно не могу сказать, что это обязательно. Однако, включил и с этим работает. Заодно и позволяет видеть, что оно работает.

Задавайте вопросы, если что-то не описал, поправляйте…

Понравилась статья? Поделить с друзьями:
  • Goip voip ошибка 401
  • Gog steam ошибка плагина
  • Gog games ошибка
  • Gog galaxy ошибка удаления e15
  • Gog galaxy ошибка при запуске