7

我想使用Google People API检索我的联系人姓名、电子邮件地址和电话号码,我正在使用他们的Try it!用于测试 API 的工具。

正在检索姓名,但未检索电子邮件地址和电话号码。我认为我做的一切都是正确的。我已通过适当的范围和选定的字段进行了适当的身份验证。 在此处输入图像描述 在此处输入图像描述

难道我做错了什么?或者这可能是谷歌方面的问题?

4

5 回答 5

17

我找到了解决方案。根据 Google People API 文档,省略此RequestMask字段将包括所有字段,但这不会发生。就我而言,将RequestMask字段设置为person.names,person.emailAddresses,person.phoneNumbers有效。

于 2016-04-07T04:28:02.193 回答
2

为了清楚起见——因为这对我来说真的不是——如果你GET自己构建请求,请求掩码的查询参数是requestMask.includeField. 嵌套的 JSON 被展平为一个键路径。所以完整的连接列表GET请求将类似于:

https://content-people.googleapis.com/v1/people/me/connections?requestMask.includeField=person.names,person.addresses,person.email_addresses,person.organizations,person.phone_numbers

于 2017-02-08T23:29:40.773 回答
2

仅当用户将其添加到其 Google 个人资料中时,才会获取用户的电话号码和其他详细信息。

如果您正在使用Try this API工具并使用“resourceName = people/me”,那么:

  1. 您应该使用您的 Google 帐户登录,并且
  2. 同意允许 google API explorer 工具访问已登录用户(在本例中为您的)的个人资料详细信息。请参见此处的示例。

在您同意后,它将能够获取登录用户的“电话号码”和“地址”。

如果您想访问其他用户的个人资料,或者您正在从任何其他来源调用 API,那么:

  1. 用户必须允许您的应用程序/网站/程序从他/她的个人资料中访问所请求的信息

  2. 您必须在 GET REQUEST HEADERS 中包含 'authorization' KEY 和 VALUE "Bearer (OAuth accesstoken of the target user)" 以从目标用户的个人资料中获取个人详细信息。

OAuth accesstoken 可以直接从用户同意响应中获得,也可以通过用 refreshtoken 交换 accesstoken 来获得。

于 2017-08-21T09:27:03.793 回答
2

您必须使用 people.connections.list 来获取联系人列表,然后遍历它们并使用 people.get 来获取每个单独的联系人。在我的例子中,我将 pageSize 设置为 50,然后我使用people:batchGet(一次最多支持 50 个资源名称)来获取这 50 个联系人的详细信息。

于 2016-04-25T00:34:35.773 回答
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

于 2017-02-02T11:19:55.377 回答