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,
- pomocą nowej biblioteki klienta, aby uzyskać autoryzację.
- 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.
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? –