#python #google-app-engine #calendar #google-oauth
#python #google-app-engine #Календарь #google-oauth
Вопрос:
TL; DR Каков предпочтительный способ сделать это сейчас, когда учетные записи служб нуждаются в настройке делегирования по всему домену?
У меня есть проект GAE (среда выполнения python 2.7), который использует Google Calendar API v3. До прошлой недели я использовал учетную запись службы GAE по умолчанию для подключения к API календаря, и учетной записи службы было предоставлено разрешение на чтение / запись в календарь в настройках общего доступа к календарю.
С прошлого четверга, 20 октября, учетная запись службы не может выполнять запись в календарь (events.post или events.patch) — возвращает 403 запрещенных значения — а чтение (events.list) возвращает 200, но записей нет. При проверке разрешений для учетной записи в разделе общий доступ к календарю оно было изменено на «Видеть только свободное / занятое».
Я полагаю, что это связано с объявлением Google о закрытии учетных записей службы OAuth 1.0 от 20 октября: https://developers.googleblog.com/2016/04/saying-goodbye-to-oauth-10-2lo.html
Рекомендация, по-видимому, заключается в предоставлении делегирования учетной записи службы в масштабах всего домена: https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority Однако учетная запись службы GAE по умолчанию не содержит списка a client_id
. Итак, мы создали новую учетную запись службы и предоставили ей делегирование по всему домену.
Но новая учетная запись службы работает ничуть не лучше. Я попытался использовать оба AppAssertionCredentials
, создал файл ключа JSON и попробовал использовать ServiceAccountCredentials
, как подробно описано на https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority
AppAssertionCredentials
похоже, не работает, потому что учетная запись не является учетной записью службы по умолчанию, даже передавая service_account_id
параметр.
ServiceAccountCredentials
обновляет ключ и т.д. Но я получаю то же поведение, что и с учетной записью службы по умолчанию: 403 запрещенных ошибки при записи и отсутствие записей, возвращаемых при чтении.
Я дважды проверил, что для новой учетной записи службы настроено делегирование по всему домену, и в разрешениях календаря оно указано как «Вносить изменения в события».
Редактировать:
Мы также смогли настроить делегирование в масштабах всего домена для учетной записи службы GAE по умолчанию. Однако он по-прежнему не работает, используя ни AppAssertionCredentials
, ни ServiceAccountCredentials
. Я получаю то же поведение: 403 запрещенных ошибки при записи и отсутствие записей, возвращаемых при чтении.
ПРАВКА #2:
Мы также попытались создать новую учетную запись службы с нуля, установив DwD и разрешения для учетной записи в календаре. То же поведение, а разрешения календаря принудительно отображаются как «Видеть только свободные / занятые», при этом другие параметры выделены серым цветом.