2016-02-24 24 views
5

Sto utilizzando un esempio di API People di Google rilasciato di recente da here. Ho esteso un campione un po 'per visualizzare ulteriori informazioni sul contatto come un indirizzo email e un numero di telefono. Il codice che dovrebbe fare il lavoro è presentato sotto.Recupero di informazioni su un contatto con Google People API (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."); 
     } 
    } 
} 

sto testando questo programma con la mia lista dei contatti e posso ottenere con successo una lista di persone con i campi di nome. Tuttavia, non è possibile ottenere valori per gli indirizzi e-mail e i numeri di telefono (gli elenchi sono sempre nulli), sebbene questi valori siano impostati nell'elenco dei contatti (verificato tramite Gmail-> Contatti). Cosa mi manca?

risposta

16

Ok, problema risolto. Sembra che la documentazione di Google sia un po 'fuorviante (beh, è ​​appena stata rilasciata;)). Quando provo a recuperare i miei contatti usando people.connections.list (vedi here) ci sono diversi parametri di query che possono essere impostati. Tuttavia, per il parametro requestMask si afferma che "Omettere questo campo includerà tutti i campi" che non è il caso (almeno non ha funzionato per me). Pertanto, è necessario specificare esplicitamente quali campi devono essere restituiti nella risposta. Il codice modificato è riportato di seguito. Vorrei che le persone di Google chiarissero questo punto un po '.

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

Ai posteri, ecco la lista dei validi maschere richiesta: 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. relazioni, person.relationship_interests, person.relationship_statuses, person.residences, person.skills, person.taglines, person.urls – GBleaney

+0

Aveva lo stesso problema (http://stackoverflow.com/questions/36466050/why-cant-i-retrieve -emails-indirizzi-e-phone-numeri-con-google-persone-API). Sono contento che tu abbia trovato la soluzione. Dovremmo segnalarlo a Google. – nunoarruda

+0

@foma grazie, mi salva. – Ankur1994a