Внутренняя ошибка (HttpError 500) при вызовах API консоли поиска Google (webmasters/v3)

Я подготовил код, который должен получать данные из нового веб-API консоли Google для веб-мастеров (v3).

import os
from oauth2client.service_account import ServiceAccountCredentials
import httplib2
from apiclient.discovery import build
import googleapiclient
import json


client_email = '<ACCOUNT_IDENTIFIER>@<PROJECT_IDENTIFIER>.iam.gserviceaccount.com'
scopes = ['https://www.googleapis.com/auth/webmasters.readonly',
      'https://www.googleapis.com/auth/webmasters']

private_key_path = os.getcwd() + os.path.normpath('/key.p12')
http = httplib2.Http()
credentials = ServiceAccountCredentials.from_p12_keyfile(client_email,
                                                         private_key_path,
                                                         private_key_password="notasecret",
                                                         scopes=scopes
                                                        )
http_auth = credentials.authorize(http)
webmasters_service = build('webmasters', 'v3', credentials=credentials, http=http_auth)
query_params = {"startDate": "2016-03-01", "endDate": "2016-03-02"}
try:
    quered_results = webmasters_service.searchanalytics().query(
        key="<KEY>",
        siteUrl="http://<SITE_DOMAIN>/",
        body=json.dumps(query_params),
        fields="rows",
        alt="json"
    ).execute()
    print(quered_results)
except googleapiclient.errors.HttpError as e:
    print(e)

Результаты выполнения с ошибкой:

<HttpError 500 when requesting https://www.googleapis.com/webmasters/v3/sites/http%3A%2F%2F<SITE_DOMAIN>%2F/searchAnalytics/query?key=<KEY>&alt=json&fields=rows returned "Backend Error"

Код сверху для авторизации с ключом ssh в формате p12. Ключевой файл правильный. Использование client_secrets.json приводит к той же ошибке, код. JSON для ошибки:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "backendError",
    "message": "Backend Error",
   }
  ],
  "code": 500,
  "message": "Backend Error"
 }
}
  • Я подключил электронную почту к консоли инструментов для веб-мастеров.
  • Кажется, авторизация работает, поскольку нет ошибок для использованного ключа / учетной записи

Есть идеи?

Я заметил, что та же самая ошибка происходит, когда я получаю на https://developers.google.com/apis-explorer с неправильно заданным "телом запроса", но я не вижу ошибку в JSON, который я отправляю. Кстати, было бы неплохо получить сообщение об этом...

1 ответ

Нашел это! Параметр body на самом деле должен быть объектом python, а не строкой в ​​формате JSON!

body=json.dumps(query_params),

Должно быть

body=query_params,
Другие вопросы по тегам