2016-02-24 2 views
5

Я использую пример недавно выпущенного API People от Google от here. Я немного расширил образец, чтобы отобразить дополнительную информацию о контакте, такую ​​как адрес электронной почты и номер телефона. Код, который должен выполнить эту работу, представлен ниже.Получение информации о контакте с API Google People (Java)

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-> Контакты). Что мне не хватает?

ответ

16

Хорошо, проблема решена. Похоже, документация Google немного вводит в заблуждение (ну, она только что была выпущена;)). Когда я пытаюсь найти мои контакты, используя people.connections.list (см. here), можно задать несколько параметров запроса. Тем не менее, для параметра requestMask указано, что «Опущение этого поля будет включать все поля», что не так (по крайней мере, не работало для меня). Поэтому необходимо явно указать, какие поля должны быть возвращены в ответе. Модифицированный код приведен ниже. Хотелось бы, чтобы люди Google немного прояснили этот момент.

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."); 
     } 
    } 
} 
+5

Для потомков, вот список действительных запросов масок: person.addresses, person.age_range, 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. отношения, person.relationship_interests, person.relationship_statuses, person.residences, person.skills, person.taglines, person.urls – GBleaney

+0

Если бы та же проблема (http://stackoverflow.com/questions/36466050/why-cant-i-retrieve -emails-адрес-и-телефон-номер-с-Google-люди-API). Рад, что вы нашли решение. Мы должны сообщить об этом Google. – nunoarruda

+0

@foma спасибо, это меня спасает. – Ankur1994a

Смежные вопросы