13

Próbuję pracować z Google Contacts API v3.Google Contacts API z klientem Google JavaScript Lib

Z powodu autoryzacji i autoryzacji OAuth2, zacząłem od Google APIs Client Library for JavaScript. Mam no problemy z tą częścią dostępu API.

Ale po wykonaniu auth część nie wiem, co dalej. Czy mogę użyć interfejsu google-api-javascript-client dla interfejsu Google Contacts API v3? W interfejsie list of the supported Google APIs by the javascript-client interfejs API kontaktów nie jest wyświetlany. Ale mam pełny dostęp z OAuth 2.0 Playground tool.

Jestem bardzo zdezorientowany, który klient działa najlepiej z najnowszym interfejsem Google Contacts API. Co to jest o gdata-javascript-client?

+0

jakiejkolwiek aktualizacji tego? Wydaje się, że problem nadal istnieje, nie jestem w stanie używać (lub może to być nie wiem), google kontakty api v3. czy ktoś jeszcze znalazł rozwiązanie? –

Odpowiedz

-2

google kontakt v3 jest twoim najlepszym przyjacielem dla tego zadania

tutaj można znaleźć wszystkie żądania posible końcowy https://developers.google.com/google-apps/contacts/v3/

jak dla całej listy kontaktów jest to punkt końcowy https://developers.google.com/google-apps/contacts/v3/#retrieving_all_contacts

Po get uwierzytelnienie możesz zrobić, pobierz prośbę do tego adresu URL, aby uzyskać całą listę kontaktów jest to przykład w pytonie http://code.google.com/p/gdata-python-client/source/browse/samples/contacts/contacts_example.py

3

Problem polega na tym, że interfejs API Kontakty v3 to starszy interfejs API, który działa z wycofanym . Dlatego jest niezgodny z nowszym Google APIs JavaScript Client.

Na razie trzeba będzie załadować i korzystać z biblioteki klienta GData. Aby uzyskać więcej informacji na temat różnicy między biblioteką GData i klientem Google API, zapoznaj się z ostatnim pytaniem SO: gapi.client.load versus google.load

+0

Dziękujemy za wyjaśnienia! Próbuję pracować z GData Client Lib. Niestety uwierzytelnienie nie działa. Myślę, że jest to ogólny problem, ponieważ [interaktywny przykład z Google] (https://developers.google.com/google-apps/contacts/v1/developers_guide_js?hl=de#Interactive_Samples) również nie zadziałał. Mam nadzieję, że to jest tymczasowy problem. – einsA

9

Aby użyć api v3 kontaktów z tokenem uwierzytelniania dostarczonym przez gapi (Google JS client lib) ten jest pomocny przy użyciu 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

uwaga: jest to przedmiotem ograniczeń polityki krzyżowej – Jason

+0

Więc nie ma sposobu, aby to zrobić z lib klienta javascript? gapi.client.load ("kontakty", "v3", function() {}); na przykład? – rncrtr

+0

niesamowite, to uratowało mój dzień – nathanengineer

0

Unfortunate Google Contacts API nie działa z nowej biblioteki javascript Client. Działa tylko z biblioteką klienta GData. Próbowałem pracować z biblioteką klienta GData, ale jest to trudne, ponieważ otrzymujesz ostrzeżenia w dokumentacji w każdym miejscu, w którym biblioteka została uznana za przestarzałą.

Dlatego użyłem wodorku,

  1. pomocą nowej biblioteki klienta, aby uzyskać autoryzację.
  2. użyć adresu URL, aby uzyskać kontakty

Niestety, z powodu ograniczeń poprzecznych domen trzeba użyć jsonp, w przeciwnym razie przeglądarka nie powiedzie się.

<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); 
    } 
} 

Uwagi: używam Mootools dla jsonp ale można również użyć jQuery lub wanilii js z How to make a JSONP request from Javascript without JQuery?

Musisz podać swoje własne YOURCLIENTID i zdefiniować funkcję processContacts.

Wymagane jest gdata.io.handleScriptLoaded (dane), ponieważ oczekuje tego URL podczas wywołania zwrotnego.

Używam limitu 7000, ale nie sądzę, że jest to konieczne.

Jeśli nie chcesz używać JSONP, możesz przekazać access_token do swojego serwera internetowego i przetworzyć tam adres URL, np. z cURL lub z Node.js po prostu zamień json-in-script na json.

W json-in-script jest ważny w przeglądarce, ponieważ w przeciwnym razie przeglądarka zaskakuje.

Dzięki innym odpowiedziom na tej stronie, które wskazały mi właściwy kierunek.

Mam nadzieję, że Google sprawi, że interfejs API Kontakty będzie działać z nową biblioteką klientów JavaScript. Mam nadzieję, że inni będą mogli w międzyczasie korzystać z tego rozwiązania.

0

Na listę kontaktów korzystających z Google pobierania Plus to wykorzystać: -

<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)); 
    } 
}); 

}

W Ciele HTML: -

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

Wyjście będzie miał jako pole z kontakt zawierający numer telefonu.

Upewnij się, że otrzymałeś identyfikator klienta z Google Developer Console z właściwym przekierowaniem uri.

0

To co znaleźliśmy pracować, aby uzyskać indywidualne dane:

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

Jeśli prowadzisz JSON.stringify (dane) można zobaczyć wszystkie nagłówki, które można nazwać na.

2

Wiem, że to stare pytanie, ale to pytanie pojawia się, gdy szukasz informacji o kontaktach z konta Google.

Jeśli potrzebujesz tylko dostępu do kontaktu w celu zaimportowania go lub wyświetlenia adresu e-mail, numerów telefonu lub innych informacji, a nie musisz go modyfikować, możesz użyć interfejsu API People (https://developers.google.com/people/). Dla javascript możesz sprawdzić zakładkę próbek.

Stworzyłem sedno, które jest niemal próbką od Google, ale dodaje parametry requestField.

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

Powiązane problemy