2016-02-24 9 views
5

Ich verwende ein Beispiel der kürzlich veröffentlichten Google People-API von here. Ich habe eine Probe ein wenig erweitert, um zusätzliche Informationen über den Kontakt wie eine E-Mail-Adresse und eine Telefonnummer anzuzeigen. Der Code, der die Arbeit ausführen soll, ist unten aufgeführt.Abrufen von Informationen zu einem Kontakt mit 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."); 
     } 
    } 
} 

Ich teste dieses Programm mit meiner Kontaktliste, und ich kann erfolgreich eine Liste von Personen zusammen mit den Namensfeldern erhalten. Ich kann jedoch keine Werte für E-Mail-Adressen und Telefonnummern erhalten (Listen sind immer null), obwohl diese Werte in meiner Kontaktliste (verifiziert über Google Mail-> Kontakte) festgelegt sind. Was vermisse ich?

Antwort

16

Ok, Problem gelöst. Es sieht so aus, als wäre die Dokumentation von Google ein bisschen irreführend (nun, es wurde gerade veröffentlicht;)). Wenn ich versuche, meine Kontakte mit people.connections.list (siehe here) abzurufen, gibt es mehrere Abfrageparameter, die festgelegt werden können. Für den Parameter requestMask wird jedoch angegeben, dass "das Auslassen dieses Felds alle Felder einschließt", was nicht der Fall ist (zumindest nicht für mich funktionierte). Daher muss explizit angegeben werden, welche Felder in der Antwort zurückgegeben werden sollen. Der modifizierte Code ist nachstehend angegeben. Ich wünschte, Google-Leute würden diesen Punkt ein wenig klären.

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

Für die Nachwelt hier ist die Liste der gültigen Anfrage Masken: person.addresses, person.age_range, person.biographies, person.birthdays, person.bragging_rights, person.cover_photos, person.email_addresses, person.events, Personen.Gesetze, Personen.im_Kunden, Personen.Interessen, Personen.Lokale, Personen.Mitgliedschaften, Personen.Metadaten, Personen.Name, Personen.Nicknamen, Personen.Aufgaben, Personen.Organisationen, Personen.Phonennummern, Personen.Fotos, Personen. Beziehungen, person.relationship_interests, person.relationship_statuses, person.residences, person.skills, person.taglines, person.urls – GBleaney

+0

Hatte das gleiche Problem (http://stackoverflow.com/questions/36466050/why-cant-i-retrieve -Mails-Adressen-und-Telefonnummern-mit-google-people-api). Freut mich, dass Sie die Lösung gefunden haben. Wir sollten dies Google melden. – nunoarruda

+0

@foma danke, es rettet mich. – Ankur1994a