Резервное копирование контактов пользователей (с учетной записью службы)

Я администратор Gsuite.

У меня есть задача собрать резервную копию всех контактов всех пользователей нашего сервиса g suite.

как собирать почту через gmail api - я понимаю. все ок.

но с контактами я в тупике

  1. создал сервисный аккаунт

  2. Широкие настройки домена для учетной записи службы имеют разрешения для https://www.googleapis.com/auth/contacts. И другие области применения

3,1. при подключении к Contacts-API я получаю "Запрос является действительным ключом API." - Почему? (та же учетная запись службы получает все электронные письма и события календаря...)
3.2. при подключении к People-api:

  • Я могу создать только учетные записи самостоятельно (popeple/me), если я использую credentials.with_subject("myemail@mydomain"))

  • если учетные данные простой учетной записи службы - вернуть "Только" люди / я "ресурс поддерживается."

Q:

  1. Люди-API могут получать только контакты "люди / я"?
  2. Какой 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)

0 ответов

Другие вопросы по тегам