我正在尝试使用People API的最基本的例子,但我遇到了一些困难。
我正在使用python来检索使用People V1 API的所有连接的列表。重要的是,我正在使用service account,因为我正在编写的脚本将在服务器上运行,并且无法使用涉及用户操作的传统3脚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提供的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+帐户至少有一个连接,但它返回了一系列空的结果。代码本身有问题吗?或者问题可能与我的帐户有关?
感谢任何帮助,谢谢!