Резервное копирование контактов пользователей (с учетной записью службы)
Я администратор Gsuite.
У меня есть задача собрать резервную копию всех контактов всех пользователей нашего сервиса g suite.
как собирать почту через gmail api - я понимаю. все ок.
но с контактами я в тупике
создал сервисный аккаунт
Широкие настройки домена для учетной записи службы имеют разрешения для https://www.googleapis.com/auth/contacts. И другие области применения
3,1. при подключении к Contacts-API я получаю "Запрос является действительным ключом API." - Почему? (та же учетная запись службы получает все электронные письма и события календаря...)
3.2. при подключении к People-api:
Я могу создать только учетные записи самостоятельно (popeple/me), если я использую credentials.with_subject("myemail@mydomain"))
если учетные данные простой учетной записи службы - вернуть "Только" люди / я "ресурс поддерживается."
Q:
- Люди-API могут получать только контакты "люди / я"?
- Какой API я могу использовать для резервного копирования контактов от всех пользователей моего домена?
спасибо и извините за английский
SCOPES
- авториз /gmail.readonly,
- авт / контакты,
- а / каналы / соответствия / аудит /,
- m8 / корма,
так далее
Пример хорошего кода people-api, он работает со мной, но не работает с другими пользователями:
class BlaBla():
....
def build_api(self, email, api, api_version, delegate = True):
self.email = email
credentials = service_account.Credentials.from_service_account_file(self.SERVICE_ACCOUNT_FILE, scopes = self.SCOPES)
if delegate:
delegated_credentials = credentials.with_subject(self.email)
self.service = build(api, api_version, credentials=delegated_credentials)
else:
self.service = build(api, api_version, credentials=credentials)
def get_user_contacts(self, email):
self.build_api(email=email, api="people", api_version="v1", delegate = True)
resourceName = "people/me"
connections = self.service.people().connections().list(resourceName=resourceName, pageSize = 10, personFields='names,emailAddresses').execute()
# connections - with my contacts
self.build_api(email=email, api="people", api_version="v1", delegate = False)
resourceName = "people/googleId..."
connections = self.service.people().connections().list(resourceName=resourceName, pageSize = 10, personFields='names,emailAddresses').execute()
# return "Only "people/me" resource is supported."
bla=BlaBla()
bla.get_user_contacts(args.email)