Я админ 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"))
если учетные данные простой учетной записи службы - вернуть Поддерживается только ресурс «люди / я». *
В:
- People-API может получать только контакты "people / me"?
- Какой 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)