使用 Google People API (Java) 检索有关联系人的信息

Posted

技术标签:

【中文标题】使用 Google People API (Java) 检索有关联系人的信息【英文标题】:Retrieving information about a contact with Google People API (Java) 【发布时间】:2016-06-06 21:01:18 【问题描述】:

我正在使用here 最近发布的 Google 人员 API 示例。我已经扩展了一个示例以显示有关联系人的其他信息,例如电子邮件地址和电话号码。应该完成这项工作的代码如下所示。

public class PeopleQuickstart 

    ...

    public static void getPersonInfo(Person person)

        // Get names
        List<Name> names = person.getNames();
        if(names != null && names.size() > 0) 
            for(Name personName: names) 
                System.out.println("Name: " + personName.getDisplayName());
            
        

        // Get email addresses
        List<EmailAddress> emails = person.getEmailAddresses();
        if(emails != null && emails.size() > 0) 
            for(EmailAddress personEmail: emails) 
                System.out.println("Email: " + personEmail.getValue());
            
        

        // Get phone numbers
        List<PhoneNumber> phones = person.getPhoneNumbers();
        if(phones != null && phones.size() > 0) 
            for(PhoneNumber personPhone: phones)
                System.out.println("Phone number: " + personPhone.getValue());
            
        
    

    public static void main(String [] args)  throws IOException 

        People service = getPeopleService();

        // Request 120 connections.
        ListConnectionsResponse response = service.people().connections()
                .list("people/me")
                .setPageSize(120)
                .execute();

        // Display information about your connections.
        List<Person> connections = response.getConnections();
        if (connections != null && connections.size() > 0) 
            for (Person person: connections)
                getPersonInfo(person);
            
         else 
            System.out.println("No connections found.");
           
    

我正在使用我的联系人列表测试这个程序,并且我可以成功获取人员列表以及姓名字段。但是,我无法获取电子邮件地址和电话号码的值(列表始终为空),尽管我的联系人列表中确实设置了这些值(通过 Gmail-> 联系人验证)。我错过了什么?

【问题讨论】:

【参考方案1】:

好的,问题解决了。看起来 Google 的文档有点误导(嗯,它刚刚发布;))。当我尝试使用 people.connections.list(请参阅here)获取我的联系人时,可以设置几个查询参数。但是,对于 requestMask 参数,声明“省略此字段将包括所有字段”,但事实并非如此(至少对我不起作用)。因此,必须明确指定要在响应中返回哪些字段。修改后的代码如下。我希望谷歌的人能澄清一下这一点。

public class PeopleQuickstart 

    ...

    public static void main(String [] args)  throws IOException 

        People service = getPeopleService();

        // Request 120 connections.
        ListConnectionsResponse response = service.people().connections()
                .list("people/me")
                .setPageSize(120)
                // specify fields to be returned
                .setRequestMaskIncludeField("person.names,person.emailAddresses,person.phoneNumbers")
                .execute();

        // Display information about a person.
        List<Person> connections = response.getConnections();
        if (connections != null && connections.size() > 0) 
            for (Person person: connections)
                getPersonInfo(person);
            
         else 
            System.out.println("No connections found.");
           
    

【讨论】:

对于后代,这里是有效请求掩码的列表:person.addresses、person.age_range、person.biographies、person.birthdays、person.bragging_rights、person.cover_photos、person.email_addresses、person。事件,person.genders,person.im_clients,person.interests,person.locales,person.memberships,person.metadata,person.names,person.nicknames,person.occupations,person.organizations,person.phone_numbers,person.photos, person.relations、person.relationship_interests、person.relationship_statuses、person.residences、person.skills、person.taglines、person.urls 遇到了同样的问题 (***.com/questions/36466050/…)。很高兴您找到了解决方案。我们应该将此情况报告给 Google。 无法访问 emailAddress,其他工作正常。有人可以帮忙吗? 现在掩码参数是 - person.addresses、person.age_ranges、person.biographies、person.birthdays、person.bragging_rights、person.cover_photos、person.email_addresses、person.events、person.genders、person .im_clients、person.interests、person.locales、person.memberships、person.metadata、person.names、person.nicknames、person.occupations、person.organizations、person.phone_numbers、person.photos、person.relations、person.relationship_interests ,person.relationship_statuses,person.residences,person.skills,person.taglines,person.urls 感谢您的回复。它工作完美,非常有帮助。

以上是关于使用 Google People API (Java) 检索有关联系人的信息的主要内容,如果未能解决你的问题,请参考以下文章

在 Google Apps 脚本中使用 Google People API 删除联系人返回 404 错误

使用 Google Scripts 从 Google People API 获取 google 联系人电子邮件目录中的电子邮件列表

如何使用 google-api-ruby-client People API 传递 OAuth 令牌?

将Google People API与服务帐户配合使用

Google People API 返回 Grpc 状态码 null

使用 google people api 获取群组的联系人