Резервное копирование контактов пользователей (с учетной записью службы) - PullRequest
0 голосов
/ 14 мая 2019

Я админ 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"))

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

В:

  1. People-API может получать только контакты "people / me"?
  2. Какой API я могу использовать для резервного копирования контактов всех пользователей моего домена?

спасибо и извините за английский

ОБЛАСТИ

  • auth / gmail.readonly,
  • auth / contacts,
  • a / feeds / соответствие требованиям / аудит /,
  • m8 / feeds,

и т. д.

пример хорошего кода 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)
...