2016-06-08 13 views
5

Durante il tentativo di recuperare i contatti utilizzando l'account google dell'utente, sto affrontando alcuni problemi dopo aver utilizzato le persone API. Restituisce solo pochi indirizzi email tra tutti quelli elencati. Il token di accesso e tutti gli ambiti sono stati impostato correttamente. Codice per la seguente:People API di google contro contatti 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(); 

Invece di questo se uso il contatto API di Google, allora io sono sempre di più non di indirizzi di posta elettronica che people.Code per contatto 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()) { 
      .... 
      ..... 
      ....... 
} 

voglio sapere se c'è differenza tra entrambi e quale devo usare per ottenere risultati migliori o mi manca qualcosa. per favore suggerire Grazie..!!

+0

check out https://people.googleapis.com/$discovery/rest?version=v1 fornisce lo schema e il metodo sthat è supportato. – darewreck

risposta

3

Le persone API sono più aggiornate. Leggendo il numero Google's blog announcement, People API semplifica le chiamate necessarie all'API di Google+ e all'API dei contatti. Ora devi solo usarne uno.

"La nuova gente API utilizza le più recenti protocolli e tecnologie e andrà a sostituire l'API dei contatti, che utilizza il protocollo GData "

quando ottiene il list of connections dell'utente, assicurarsi di specificare il correct scopes quando lo si usa.

https://www.googleapis.com/auth/contacts - Richiede che l'app sia data in lettura e in scrittura ai contatti nei Contatti Google dell'utente autenticato. https://www.googleapis.com/auth/contacts.readonly - Richiede che l'app abbia accesso in lettura ai contatti nei Contatti Google dell'utente autenticato.

Controllare questo link for similarities and differences tra API People e API Contatti.

+0

ho aggiunto tutti gli ambiti correttamente, ma la gente non ha dato tanto no. di indirizzi email dei contatti come contatti api. – Ankur1994a

1

non sono sicuro se ci sono problemi con il codice Java, ma se si guarda alla richiesta che viene inviata fuori che dovrebbe essere simile a questo:

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

ho potuto per ottenere tutti i contatti con l'email e il nome corretti. Se Google "gestisce i contatti Google" vedrà un elenco di contatti. Da lì prendi quel numero e stampa semplicemente il conteggio della connessione che dovrebbe corrispondere. Devi solo assicurarti che pageSize sia abbastanza grande o che tu debba gestire il paging per ottenere tutti i contatti.

Inoltre mi sono reso conto che requestMask.includeField è molto sensibile a quali parametri e spazi si mettono. "person.name, person.email_addresses" ha funzionato e "person.name, person.email_addresses" no.

Con la vecchia API di contatto, è possibile eseguire una query sul parametro q che non penso che la gente api fornisca questa capacità. Penso che la capacità di filtrare la ricerca per parole chiave sia importante per ridurre la dimensione della richiesta.