1

我试图获得使用 People API 的最基本的基本示例,但我遇到了一些困难。

我正在使用 python 来检索我使用 People V1 API 的所有连接的列表。重要的是,我正在使用服务帐户,因为我正在编写的脚本将在服务器上运行,并且不能使用涉及用户操作的传统 3-legged OAuth。

在我的开发者控制台中,我设置了服务帐户凭据。

在此处输入图像描述

我还启用了 People API。

在此处输入图像描述

我也下载了秘密的 JSON 凭证(出于明显的原因已编辑)

{
  "type": "service_account",
  "project_id": [REDACTED],
  "private_key_id": [REDACTED],
  "private_key": [REDACTED],
  "client_email": [REDACTED],
  "client_id": [REDACTED],
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": [REDACTED]
}

最后,我的剧本。我使用了从Google 提供的这个示例中提取的简化版本。这里的主要区别是我使用的是服务帐户,因此我删除了大部分检查凭据并启动用户 OAuth 流程的方法。

import httplib2

from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage
from oauth2client.service_account import ServiceAccountCredentials

SCOPES = 'https://www.googleapis.com/auth/contacts.readonly'

def main():
    credentials = ServiceAccountCredentials.from_json_keyfile_name(
        'keep-in-touch-5d3ebc885d4c.json', SCOPES)

    http = credentials.authorize(httplib2.Http())

    service = discovery.build('people', 'v1', http=http,
        discoveryServiceUrl='https://people.googleapis.com/$discovery/rest')

    print('List 10 connection names')
    results = service.people().connections().list(resourceName='people/me',
        pageSize=10).execute()
    connections = results.get('connections', [])

    for person in connections:
        names = person.get('names', [])
        if len(names) > 0:
            name = names[0].get('displayName')
            print(name)


if __name__ == '__main__':
    main()

问题是,这什么也没返回。我知道我的 Google+ 帐户至少有一个连接,但它返回的是一组空的结果。代码本身有问题吗?或者问题可能出在我的帐户上?

任何帮助表示赞赏,谢谢!

4

0 回答 0