К сожалению, API контактов Google не работает с новой клиентской библиотекой Javascript. Он работает только с клиентской библиотекой GData. Я пробовал работать с клиентской библиотекой GData, но это сложно, поскольку вы получаете предупреждения в документации на каждом этапе, когда библиотека устарела.
Поэтому я использовал гидрид,
- используя новую клиентскую библиотеку, чтобы пройти аутентификацию.
- Используйте URL-адрес для получения контактов
К сожалению, из-за междоменных ограничений вам необходимо использовать JSONP, иначе браузер не сработает.
<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);
}
}
Примечания: я использую Mootools для JSONP, но вы также можете использовать jquery или vanilla js с Как сделать JSONP-запрос из Javascript без JQuery?
Вам необходимо предоставить свой собственный YOURCLIENTID и определить функцию processContacts.
Gdata.io.handleScriptLoaded (data) необходим, поскольку это то, что URL-адрес ожидает во время обратного вызова.
Я использую лимит 7000, но не думаю, что это необходимо.
Если вы не хотите использовать JSONP, вы можете перенаправить access_token на свой веб-сервер и обработать там URL-адрес, например с cURL или с Node.js просто замените json-in-script на json.
В json-in-script это важно для браузера, иначе браузер хрипит.
Благодаря другим ответам на этой странице, которые указали мне правильное направление.
Я надеюсь, что Google сделает API контактов совместимым с новой клиентской библиотекой Javascript. Я надеюсь, что другие пользователи тем временем смогут использовать это решение.
person
MLU
schedule
04.02.2015