我想使用Google People API检索我的联系人姓名,电子邮件地址和电话号码,我正在使用他们的Try it!工具来测试API。
正在检索名称,但不会检索电子邮件地址和电话号码。我想我正在做的一切正确。我已通过适当的范围和选定的字段进行了适当的身份验证。
我做错了吗?或者这可能是谷歌方面的一个问题?
答案 0 :(得分:15)
我找到了solution。根据Google People API文档,省略此RequestMask
字段将包含所有字段,但不会发生这种情况。在我的情况下,将RequestMask
字段设置为person.names,person.emailAddresses,person.phoneNumbers
。
答案 1 :(得分:2)
你必须使用people.connections.list来获取联系人列表,然后循环它们并使用people.get来获取每个联系人。在我的情况下,我将pageSize设置为50,然后我使用people:batchGet(一次最多支持50个资源名称)来获取这50个联系人的详细信息。
答案 2 :(得分:2)
要明确 - 因为真的不是我 - 如果您自己构建GET
请求,请求掩码的查询参数是requestMask.includeField
。嵌套的JSON被展平为一个键路径。因此,完整的连接列表GET
请求将类似于:
答案 3 :(得分:2)
用户的电话号码和其他详细信息仅在用户将其添加到Google个人资料中时才会被提取。
如果您使用Try this API工具并使用' resourceName = people / me',则:
在您同意之后,它将能够获取“电话号码”'和'地址'对于登录用户。
如果您想访问其他用户的个人资料,或者您正在从任何其他来源调用API,那么:
用户必须授权您的应用/网站/程序从他/她的个人资料中访问所需信息
您必须包含'授权'使用VALUE"承载(目标用户的OAuth访问)"获取请求标题的关键字;从目标用户的个人资料中获取个人详细信息。
OAuth accesstoken可以直接从用户同意响应中获得,也可以通过刷新connecttoken来获取。
答案 4 :(得分:1)
将凭据对象保存到某处后。您可以使用以下代码检索电话号码和其他详细信息。您只需设置RequestMask
即可
#get the credentials
cred_obj = OAuth2Credentials.new_from_json(credentials)
http = httplib2.Http()
#create service
people_service = build(serviceName='people', version='v1', http=cred_obj.authorize(http))
results = people_service.people().connections().list(resourceName='people/me',
requestMask_includeField='person.names,person.emailAddresses,person.phoneNumbers',
pageSize=160)
res = results.execute()
connections = res.get('connections', [])
for person in connections:
names = person.get('names', [])
phone_numbers = person.get('phoneNumbers', [])
if len(names) > 0:
name = names[0].get('displayName')
if len(phone_numbers)>0:
phone_no = phone_numbers[0].get('value')
print name, phone_no