通过服务帐户进行身份验证时,People API不返回任何连接

时间:2016-10-06 05:16:40

标签: python google-api google-people

我正在尝试使用People API的最基本的例子,但我遇到了一些困难。

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

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

enter image description here

我也启用了People API。

enter image description here

我也下载了秘密的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提供的this example提取的简化版本。这里的主要区别是我使用的是服务帐户,因此我删除了大部分检查凭据并启动用户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+帐户至少有一个连接,但它返回了一系列空的结果。代码本身有问题吗?或者问题可能与我的帐户有关?

感谢任何帮助,谢谢!

0 个答案:

没有答案