Я пытаюсь использовать OAuth 2.0 для приложения Server to Server для инструментов Google для веб-мастеров (Search Console), поэтому я выполнил инструкции here.OAuth 2.0 Сервер к серверу Авторизация авторизации Fail (Search Console - Инструменты для веб-мастеров)
Это приложение не на Google App Engine
или Google Compute Engine
Created счета в службы и позволил общедоменной делегации. Загрузили файл .json
и сохранили его в корне сценария.
Пример:
from oauth2client.service_account import ServiceAccountCredentials
from apiclient.discovery import build
from httplib2 import Http
scopes = ['https://www.googleapis.com/auth/webmasters.readonly']
credentials = ServiceAccountCredentials.from_json_keyfile_name(
'keyfile.json', scopes=scopes)
http_auth = credentials.authorize(Http())
webmasters_service = build('webmasters', 'v3', http=http_auth)
site_list = webmasters_service.sites().list().execute()
print(site_list)
Но я получаю
{}
Пусто набор данных. Даже если я изменю адрес электронной почты в keyfile.json
. Это говорит мне, что файл каким-то образом не используется. Таким образом, попытка получить списки сайтов в учетной записи в результате Empty.
Если я
site_list = webmasters_service.sitemaps().list(siteUrl="www.example.com").execute()
я получаю:
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/webmasters/v3/sites/www.example.com/sitemaps?alt=json returned "User does not have sufficient permission for site 'http://www.example.com/'. See also: https://support.google.com/webmasters/answer/2451999.">
Что еще раз говорит мне, что эта учетная запись не имеет право на получение сайтмепов данного URL
, поскольку он не имеет соответствующие разрешения.
Эта учетная запись является учетной записью владельца, а разрешение service account
имеет право владельца.
Любые идеи?
Спасибо
какая версия 'oauth2client' вы используете? Я попытался «из oauth2client.service_account импортировать ServiceAccountCredentials», но он не похож на «ServiceAccountCredentials» включен в мою версию 'oauth2client.service_account'. Я вижу класс 'ServiceAccountCredentials' ... – Abundnce10
Я использую' google-api-python-client (1.5.0) '. Это версия поставляется с 'pip install --upgrade google-api-python-client'. Надеюсь, поможет. [Doc] (https://developers.google.com/webmaster-tools/v3/quickstart/quickstart-python#step_1_enable_the_search_console_api) – Leustad
Первоначально я запускал 'pip install --upgrade oauth2client', но так как у меня была старая версия' pip 'он не будет обновляться должным образом. Я обновляюсь с помощью 'pip', а теперь' oauth2client' имеет класс 'ServiceAccountCredentials'. Благодаря! – Abundnce10