13

Sto provando a lavorare con lo Google Contacts API v3.API Contatti Google con client JavaScript di Google Lib

A causa dell'autenticazione OAuth2 e dell'autorizzazione, ho iniziato con Google APIs Client Library for JavaScript. Ho problemi no con quella parte dell'accesso API.

Ma dopo aver fatto la parte di autenticazione non so cosa fare dopo. Posso utilizzare lo google-api-javascript-client per l'API di Google Contatti v3? Nel list of the supported Google APIs by the javascript-client l'API di contatti non viene visualizzata. Ma ho pieno accesso con lo OAuth 2.0 Playground tool.

Sono davvero confuso quale client funzioni meglio con l'ultima API Contatti Google. Che cos'è circa lo gdata-javascript-client?

+0

qualsiasi aggiornamento a questo? Sembra che il problema esista ancora, non posso usare (o forse non lo so), google contacts api v3. qualcuno ha ancora trovato una soluzione? –

risposta

-2

google contatto v3 è il tuo migliore amico per questo lavoro

qui si possono trovare tutte le richieste posible endpoint https://developers.google.com/google-apps/contacts/v3/

come per tutta la lista contatti Questo è il punto https://developers.google.com/google-apps/contacts/v3/#retrieving_all_contacts

fine dopo ottengono autenticazione si può fare ottenere richiesta a questo url per ottenere tutti i contatti lista questo è un esempio in python http://code.google.com/p/gdata-python-client/source/browse/samples/contacts/contacts_example.py

3

Il problema riscontrato è che l'API di contatti v3 è un'API precedente che funziona con il deprecato . Pertanto è incompatibile con il più recente Google APIs JavaScript Client.

Per ora è necessario caricare e utilizzare la libreria client GData. Per ulteriori informazioni sulla differenza tra la libreria GData e il client API Google, fare riferimento a questa recente domanda SO: gapi.client.load versus google.load

+0

Grazie per il vostro chiarimento! Sto cercando di lavorare con il client GData Lib. Purtroppo l'autenticazione non funziona. Penso che questo sia un problema generale poiché anche [l'esempio interattivo di Google] (https://developers.google.com/google-apps/contacts/v1/developers_guide_js?hl=de#Interactive_Samples) non ha funzionato .. Speriamo questo è un problema temporaneo. – einsA

9

Per utilizzare l'API di contatti v3 con il token di autenticazione fornito da gapi (Google JS client lib) questo è utile, utilizzando alt=&json

$.getJSON('https://www.google.com/m8/feeds/contacts/default/full/?access_token=' + 
      authResult.access_token + "&alt=json&callback=?", function(result){ 
     console.log(JSON.stringify(result)); 
}); 
+0

nota: questo è soggetto alle restrizioni delle politiche di origine incrociata – Jason

+0

Quindi non c'è modo di farlo con la lib del client javascript? gapi.client.load ('contatti', 'v3', function() {}); per esempio? – rncrtr

+0

fantastico, questo mi ha salvato la giornata – nathanengineer

0

Sfortunato Google Contatti API non funziona con la nuova libreria client JavaScript. Funziona solo con GData Client Library. Ho provato a lavorare su GData Client Library, ma è difficile quando si ricevono avvertimenti nella documentazione in ogni momento che la libreria è stata deprecata.

Pertanto, ho usato un idruro,

  1. utilizzando la nuova libreria client, per ottenere l'autenticazione.
  2. utilizzare un URL per ottenere i contatti

Purtroppo, a causa delle restrizioni del dominio croce è necessario utilizzare JSONP, altrimenti il ​​browser non riesce.

<script src="https://apis.google.com/js/client.js"></script> 
..... 
function contactsInit() { 
    var clientId = 'YOURCLIENTID.apps.googleusercontent.com'; 
    var scopes = 'https://www.google.com/m8/feeds'; 
    gapi.auth.authorize({ 
    client_id: clientId, scope: scopes, immediate: false}, 
    handleAuthResult); 

function handleAuthResult(authResult) { 
if (authResult && !authResult.error) { 
    var url = 
    "https://www.google.com/m8/feeds/contacts/default/" + 
    "full?alt=json-in-script&access_token=" + 
    authResult.access_token + 
    "&max-results=7000&v=3.0"; 

    var myJSONP = new Request.JSONP({ 
     url: url, 
     callbackKey: 'jsoncallback', 
     data: { 
      }, 
     onRequest: function(url){ 
       // a script tag is created with a src equal to url 
      }, 
     onComplete: function(data){ 
       // the request was completed. 
      } 
     }).send(); 
    } 
} 
} 

function Skeleton() {} 
    if (!gdata) { 
    var gdata = new Skeleton(); 
    gdata.io = new Skeleton(); 
    gdata.io.handleScriptLoaded = function(data) { 
     processContacts(data); 
    } 
} 

Note: io uso Mootools per JSONP ma si potrebbe anche utilizzare jQuery o vaniglia js con How to make a JSONP request from Javascript without JQuery?

È necessario fornire il proprio YOURCLIENTID, e definire la funzione processContacts.

gdata.io.handleScriptLoaded (data) è necessario poiché ciò che l'url si aspetta durante la richiamata.

Io uso un limite di 7000, ma non penso sia necessario.

Se non si desidera utilizzare JSONP, è possibile inoltrare access_token al server Web ed elaborare l'URL lì, ad es. con cURL o con Node.js basta sostituire json-in-script con json.

In json-in-script è importante su un browser poiché altrimenti il ​​browser gracchia.

Grazie alle altre risposte in questa pagina, questo mi ha indirizzato nella giusta direzione.

Spero che Google possa rendere l'API Contatti in grado con la nuova libreria client Javascript. Spero che altri possano utilizzare questa soluzione nel frattempo.

0

Per la lista dei contatti utilizzando Google recupero più utilizzare questo: -

<script src="https://apis.google.com/js/client.js"></script> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> 
<script> 
    function auth() { 
    var config = { 
     'client_id': 'OAUTH_CLIENT_ID', 
     'scope': 'https://www.google.com/m8/feeds' 
    }; 
    gapi.auth.authorize(config, function() { 
     fetch(gapi.auth.getToken()); 
    }); 
    } 

    function fetch(token) { 
    $.ajax({ 
    url: "https://www.google.com/m8/feeds/contacts/default/full?access_token=" + token.access_token + "&alt=json", 
    dataType: "jsonp", 
    success:function(data) { 
       console.log(JSON.stringify(data)); 
    } 
}); 

}

Nel Corpo HTML: -

<button onclick="auth();">GET CONTACTS FEED</button> 

L'uscita avrà come campo con il contatto contenente il numero di telefono.

Assicurati di ottenere l'ID del client dalla console per gli sviluppatori di google con il corretto uri di reindirizzamento.

0

Questo è ciò che abbiamo trovato a lavorare per ottenere dati individuali:

var data = (JSON.stringify(data.feed.entry[0].gd$email, null, 4)); 
console.log(data); 

Se si esegue JSON.stringify (dati) è possibile vedere tutte le intestazioni che è possibile chiamare su.

2

So che si tratta di una vecchia domanda, ma questa domanda viene visualizzata quando si osserva come leggere le informazioni sui contatti da un account Google.

Se è necessario accedere al contatto per importarlo o mostrare l'e-mail, i numeri di telefono o altre informazioni e non è necessario modificarlo, è possibile utilizzare l'API Persone (https://developers.google.com/people/). Per javascript puoi controllare la scheda dei campioni.

Ho creato un gist, che è quasi il campione di Google ma che aggiunge i parametri di richiesta del campo.

https://gist.github.com/ddbb1977/7a4b408ed17c7249252a