1

Я пытаюсь использовать 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 имеет право владельца.

Любые идеи?

Спасибо

ответ

1

Я ненавижу, чтобы ответить на мой собственный вопрос, но вот как я сделал это, чтобы работать;

Так нижняя линия, на

и

...учебники кто-то забыл упомянуть о добавлении вновь созданного адреса электронной почты в раздел разрешений приложения ...

+0

какая версия 'oauth2client' вы используете? Я попытался «из oauth2client.service_account импортировать ServiceAccountCredentials», но он не похож на «ServiceAccountCredentials» включен в мою версию 'oauth2client.service_account'. Я вижу класс 'ServiceAccountCredentials' ... – Abundnce10

+0

Я использую' 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

+0

Первоначально я запускал 'pip install --upgrade oauth2client', но так как у меня была старая версия' pip 'он не будет обновляться должным образом. Я обновляюсь с помощью 'pip', а теперь' oauth2client' имеет класс 'ServiceAccountCredentials'. Благодаря! – Abundnce10

Смежные вопросы