备份gsuite用户联系人(使用服务帐户)

2024-04-20 10:24:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Gsuite的管理员。你知道吗

我有一个任务,收集备份的所有用户的所有联系我们的g套件服务

如何通过gmailapi收集邮件-我明白了,一切正常。你知道吗

但与联系人的联系让我陷入了死胡同:

  1. 创建了服务帐户

  2. 服务帐户的广域设置具有https://www.googleapis.com/auth/contacts的权限。以及其他范围

3.1。当连接到Contacts API时,我得到“请求是一个有效的API密钥。“-为什么?(同一服务帐户可获取所有电子邮件和日历事件…)
3.2. 连接到人员api时:

  • 如果我使用,我只能自己创建帐户(popeple/me)主题为的凭据("myemail@mydomain)

  • 如果简单服务帐户凭据-return“仅支持”people/me“资源。”

问题:

  1. People API只能获得“People/me”联系人?你知道吗
  2. 我可以使用什么API来备份域中所有用户的联系人?你知道吗

谢谢,对不起,我说英语

范围

  • 认证/gmail.readonly文件哦
  • 身份验证/联系人
  • a/feeds/合规性/审计/
  • m8/进给

等等

优秀代码人员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)

Tags: buildselfapiversionemailservice联系人帐户