Проблема - учетные записи служб не могут иметь псевдонимов:
В отличие от обычных учетных записей, учетные записи служб не могут иметь псевдонимы. Их адрес электронной почты определяется следующим образом:
- Имя соответствующего проекта.
- Имя учетной записи службы.
Вы не можете указать это дополнительно aliases.
Обходной путь - Выдавайте себя за обычную учетную запись:
Если вы не хотите предоставлять общий доступ к таблицам Google с автоматически сгенерированным адресом электронной почты учетной записи службы, но вы хотите продолжать использовать учетную запись службы для взаимодействия с API, лучшим вариантом будет поделиться таблицами с обычной учетной записью с допустимым адресом электронной почты и использовать учетную запись службы, чтобы выдать себя за эту обычную учетную запись при взаимодействии с API.
1. Делегирование полномочий на уровне домена:
Одно из самых полезных свойств учетной записи службы - это то, что вы можете предоставить ей возможность выдавать себя за любого пользователя в вашем домене и получать доступ к данным от его имени. Это называется делегированием всего домена, и его можно активировать для учетной записи службы, выполнив эти шаги :
Important: You need to be an administrator of the G Suite domain in order to delegate domain-wide authority.
2. Impersonating:
At this point, your service account can impersonate any user in the account. To actually impersonate an account, you would just need to specify which account you want to impersonate when building the credentials.
In your specific case, you would need to provide the parameter subject
when calling from_service_account_file
, as you can see on the domain-wide delegation section of на этой странице :
credentials = service_account.Credentials.from_service_account_file(
settings.GOOGLE_SERVICE_AUTH_FILE,
scopes=scope,
subject="your-account@your-domain.com"
)
Ссылка: