将Google People API与服务帐户配合使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Google People API与服务帐户配合使用相关的知识,希望对你有一定的参考价值。

我正在使用Google People API访问我的联系人。

我在Google Developers Console中激活了它,并创建了一个项目,一个服务帐户(以....iam.gserviceaccount.com结尾)和一个以JSON格式存储的身份验证密钥。

当我访问联系人时,似乎会将我的服务帐户地址而非我的Google帐户的联系人视为空列表。

如何告诉API使用我的帐户而不是服务帐户?

这是我到目前为止的代码:

from google.oauth2 import service_account
from googleapiclient.discovery import build
# pip install google-auth google-auth-httplib2 google-api-python-client

SCOPES = ['https://www.googleapis.com/auth/contacts.readonly']
KEY = '~/private.json'

credentials = service_account.Credentials.from_service_account_file(
    KEY, scopes=SCOPES)
service = build(
    serviceName='people', version='v1', credentials=credentials)
connections = service.people().connections().list(
    resourceName='people/me', personFields='names').execute()

print(connections)
# result: {}
答案

一个服务帐户不是你服务帐户是虚拟用户它有自己的谷歌驱动器帐户,谷歌日历和显然谷歌联系人。您看到空结果集的原因是您尚未向服务帐户帐户添加任何联系人。

服务帐户通常用于授予对开发人员拥有的数据的访问权限。例如,您可以使用服务帐户电子邮件地址并在Google云端硬盘上共享您的某个文件夹,然后它就可以访问您的Google云端硬盘帐户中的该文件夹。您可以使用谷歌日历执行相同的操作。

有些api无法让您与其他用户共享数据。 Youtube,adwords,博客和谷歌联系人等等。

您无法使用服务帐户访问您的个人Google通讯录。您最好的选择是使用oauth2对您的应用程序进行身份验证,然后以这种方式访问​​它们。

以上是关于将Google People API与服务帐户配合使用的主要内容,如果未能解决你的问题,请参考以下文章

Google People API中Person对象的空引用异常[重复]

与 Google API 服务帐户共享打印机

使用 Postman 的服务帐户对 Google Cloud Storage JSON API 进行身份验证

如何更改 google API“服务帐户”名称/电子邮件地址

ruby 使用Google表格API和服务帐户将数据导入Rails APP

无法访问通过 Google 电子表格 API 通过服务帐户创建的工作表