Клиент Google OAuth использует неверный идентификатор_проекта из файла json - Python - PullRequest
0 голосов
/ 24 марта 2019

Мой код Python (3.6.7) использует oauth2client для доступа к API Google Фото. Он успешно проходит проверку подлинности, но при попытке доступа к альбомам Google Фото он использует имя пользователя в качестве идентификатора проекта.

from __future__ import print_function
from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools

# Setup the Photo v1 API
SCOPES = 'https://www.googleapis.com/auth/photoslibrary.readonly'
store = file.Storage('credentials.json')
creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('scripts/client_id.json', SCOPES)
    creds = tools.run_flow(flow, store)
service = build('photoslibrary', 'v1', http=creds.authorize(Http()))

# Call the Photo v1 API
results = service.albums().list(
    pageSize=10, fields="nextPageToken,albums(id,title)").execute()
items = results.get('albums', [])
if not items:
    print('No albums found.')
else:
    print('Albums:')
    for item in items:
        print('{0} ({1})'.format(item['title'].encode('utf8'), item['id']))

При выполнении приведенного выше кода, он запрашивает у меня страницу авторизации. Когда я успешно аутентифицируюсь, он показывает мне следующую ошибку:

HttpError 403 при запросе {URL} возвратил "API библиотеки фотографий не использовался в проекте 123456 раньше или он отключен. Включите его, посетив https://console.developers.google.com/apis/api/photoslibrary.googleapis.com/overview?project=123456, затем повторите попытку. Если вы включили Этот API недавно, подождите несколько минут, пока действие распространяется на наши системы, и повторите попытку. ">

Интересно, что число, выделенное жирным шрифтом 123456 (очевидно, изменено), фактически является первой частью client_id, найденного в client_id.json

Но идентификатор_проекта выглядит примерно так: test1-235515

Итак, что я получил от этой ошибки, так это то, что клиент oauth2client передает client_id вместо project_id. Поэтому, даже если я включил Photos API, он никогда не получит к нему правильный доступ.

Пожалуйста, помогите с этой ошибкой. Как я могу вручную изменить идентификатор_проекта?

1 Ответ

0 голосов
/ 25 марта 2019

Идентификатор проекта отличается от номера проекта.Вы сможете увидеть и то, и другое в своей конфигурации Google Cloud Console.Подробнее об идентификации ваших проектов см. В этой документации [1].

В одном проекте Google Cloud может быть настроено много разных идентификаторов клиента OAuth.См. Эту документацию для получения информации о создании учетных данных клиента OAuth [2].Вам нужно только убедиться, что клиент, который вы создали, принадлежит проекту, для которого вы включили API.Переходя по URL-адресу, указанному в сообщении об ошибке, вы перейдете на нужную страницу конфигурации.

[1] https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects

[2] https://support.google.com/cloud/answer/6158849?hl=en

...