Я пытаюсь загрузить список календарей Google, которые видит мой пользователь. У меня настроена служебная учетная запись, и у меня есть этот код (который работает с другой учетной записью для Analytics API):
from apiclient.discovery import build
from oauth2client.client import SignedJwtAssertionCredentials
import pprint
def prepare_credentials():
f = file(keyFilePath, 'rb')
key = f.read()
f.close()
credentials = SignedJwtAssertionCredentials(
service_account_email_address, key,
scope='https://www.googleapis.com/auth/calendar.readonly')
return credentials
http = httplib2.Http()
credentials = prepare_credentials()
http = credentials.authorize(http)
service = build('calendar', 'v3', http=http)
httpRequest = service.calendarList().list()
data = httpRequest.execute()
pprint.pprint(data)
Что приводит к:
{u'etag': u'"YXs7dfDSFSFD9F0k/sofIhuT4dSLyxKaRH7vNpx5BOEU"',
u'items': [],
u'kind': u'calendar#calendarList',
u'nextSyncToken': u'00001405024697194000'}
Дело в том, что я знаю, что у меня есть доступ к календарям, и я даже использовал "Попробуй!" раздел этой страницы: https://developers.google.com/google-apps/calendar/v3/reference/calendarList/list, который возвращает ожидаемые результаты, около 10 календарей. Я пробовал разные версии параметра области ('https://www.googleapis.com/auth/calendar.readonly 'и [' https://www.googleapis.com/auth/calendar ',' https://www.googleapis.com/auth/calendar.readonly ']), и я также попытался добавить свой собственный адрес электронной почты в качестве параметров «prn» и «sub», каждый из которых дает мне ошибку «доступ запрещен». Я не могу понять, почему я могу авторизоваться с помощью своей учетной записи службы, но я не могу фактически просмотреть результаты, когда эти результаты явно просматриваются с помощью другого метода аутентификации.
Что я делаю неправильно?