我试图获得使用 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+ 帐户至少有一个连接,但它返回的是一组空的结果。代码本身有问题吗?或者问题可能出在我的帐户上?
任何帮助表示赞赏,谢谢!