2016-06-08 17 views
5

Beim Versuch, Kontakte mit Google-Konto des Benutzers zu holen, habe ich einige Probleme nach der Verwendung von Menschen API.Es gibt nur einige wenige E-Mail-Adressen von allen aufgeführten.Zugriffs-Token und alle Bereiche wurden richtig eingestellt. -Code für folgende:People API von Google im Vergleich zu Kontakten API

People peopleService = new People.Builder(httpTransport, jsonFactory, credential) 
        .build(); 
ListConnectionsResponse response = peopleService.people().connections().list("people/me") 
        .setPageSize(500).setSortOrder("FIRST_NAME_ASCENDING") 
        .setAccessToken(tokenResponse.getAccessToken()) 
        .setAlt("json") 
        .setRequestMaskIncludeField("person.names,person.emailAddresses,person.phoneNumbers") 
        . execute(); 
    connections = response.getConnections(); 

diese Stattdessen, wenn ich Kontakt API von Google verwenden, dann nein, ich bin immer mehr von E-Mail-Adressen als people.Code für den Kontakt API:

URL feedUrl = new URL("https://www.google.com/m8/feeds/contacts/default/full"); 
    ContactFeed resultFeed = myService.getFeed(feedUrl, ContactFeed.class); 

    // Print the results 
    System.out.println(resultFeed.getTitle().getPlainText()); 
    for (ContactEntry entry : resultFeed.getEntries()) { 
      .... 
      ..... 
      ....... 
} 

ich wissen will, Wenn es einen Unterschied zwischen beiden gibt und welche ich für bessere Ergebnisse verwenden muss oder fehlt mir etwas. bitte vorschlagen. Vielen Dank..!!

+0

Check-out https://people.googleapis.com/$discovery/rest?version=v1 gibt Ihnen das Schema und die Methode, die unterstützt wird. – darewreck

Antwort

3

People API ist aktueller. Durch das Lesen der Google's blog announcement-Datei vereinfacht die People-API die separaten Aufrufe für die Google+ API und die Kontakte-API. Jetzt brauchen Sie nur einen zu verwenden.

„Die neue Leute API verwendet die neuesten Protokolle und Technologien und schließlich die Kontakte API ersetzen, die die GData Protokoll verwendet“

Wenn die list of connections des Benutzers erhalten, müssen Sie die correct scopes angeben wenn es benutzt wird.

https://www.googleapis.com/auth/contacts - Fordert, dass Ihre App Lese- und Schreibzugriff auf die Kontakte in den Google Kontakte des authentifizierten Benutzers erhält. https://www.googleapis.com/auth/contacts.readonly - Fordert, dass Ihre App Lesezugriff auf die Kontakte in den Google Kontakte des authentifizierten Nutzers erhält.

Überprüfen Sie diese link for similarities and differences zwischen People API und Kontakte API.

+0

Ich habe alle Bereiche richtig hinzugefügt, aber Leute api nicht so viel nicht geben. von E-Mail-Adressen von Kontakten als die Kontakte api. – Ankur1994a

1

Ich bin nicht sicher, ob es irgendwelche Probleme mit dem Java-Code ist, aber wenn man auf Antrag suchen, die es sollte wie folgt gesendet wird sein:

URL: https://content-people.googleapis.com/v1/people/me/connections?pageSize=300&requestMask.includeField=person.names%2Cperson.email_addresses&sortOrder=FIRST_NAME_ASCENDING&key=

ich in der Lage war, um alle Kontakte mit der richtigen E-Mail und dem richtigen Namen zu erhalten. Wenn Sie "Google-Kontakte verwalten" googlen, wird eine Kontaktliste angezeigt. Von dort nehmen Sie diese Nummer, und drucken Sie einfach die Anzahl der Verbindungen aus, die übereinstimmen sollten. Sie müssen nur sicherstellen, dass die pageSize groß genug ist, oder Sie müssen mit Paging umgehen, um alle Kontakte zu erhalten.

Auch ich erkannte, dass das requestMask.includeField wirklich empfindlich ist, welche Parameter und Leerzeichen Sie setzen. "person.name, person.email_addresses" funktioniert und "person.name, person.email_addresses" nicht.

Mit dem älteren Kontakt api, können Sie den q-Parameter abfragen, die ich nicht denke, dass die Leute api diese Fähigkeit zur Verfügung stellt. Ich denke, die Möglichkeit, die Suche nach Schlüsselwörtern zu filtern, ist wichtig, um die Größe der Anfrage zu reduzieren.