Я использую API контактов Google v3 для извлечения контактов google.Не удалось получить контакты с помощью API Google
Я начал с клиентской библиотеки API API для JavaScript для аутентификации и авторизации. У меня нет проблем с этой частью доступа к API.
Но после выполнения авторизационной части мне нужно найти контакты google (доступ для чтения был бы прекрасен для меня). Я использую gdata-javascript-клиент для API контактов Google v3. Я также обращаюсь к официальному документу google и скопировал код и внесли необходимые изменения для работы для меня.
Моя проблема,
- Его не работает. Он не входит в зарегистрированную функцию обратного вызова.
- Я также пробовал использовать режим только для чтения. Но это тоже не работает.
Существует два фрагмента кода, для которых я следую, один для редактируемого режима, а другой - режим только для чтения.
Редактируемый режим доступа:
function handleAuthResult(authResult){
if (authResult && !authResult.error) {
fetch_contacts_data(authResult);
};
}
function auth() {
var config = {
'client_id': 'CLIENT_ID',
'scope': 'https://www.google.com/m8/feeds'
};
gapi.auth.authorize(config, handleAuthResult);
}
function fetch_contacts_data(token) {
$.ajax({
url: "https://www.google.com/m8/feeds/contacts/default/full?access_token=" + token.access_token + "&max-results=70000&alt=json" + "&callback=?",
dataType: "json",
success:function(data) {
contacts = [];
for (var i = 0, entry; entry = data.feed.entry[i]; i++) {
var contact = {
'name' : entry['title']['$t'],
'id' : entry['id']['$t'],
'emails' : [],
'phoneNumber' : []
};
if (entry['gd$email']) {
var emails = entry['gd$email'];
for (var j = 0, email; email = emails[j]; j++) {
contact['emails'].push(email['address']);
}
}
if (entry['gd$phoneNumber']) {
var phoneNumber = entry['gd$phoneNumber'];
for (var j = 0, phone; phone = phoneNumber[j]; j++) {
contact['phoneNumber'].push(phone['$t']);
}
}
if (!contact['name']) {
contact['name'] = contact['emails'][0] || "<Unknown>";
}
contacts.push(contact);
}
numContacts = contacts.length;
friend_list_json_str = '';
for(var j=0;j<numContacts;j++) {
name = (contacts[j])['name'];
emails = (contacts[j])['emails'];
phone = (contacts[j])['phoneNumber'];
email_list= '';
phone_list= '';
for(var k=0;k<emails.length;k++) {
email_list += '"'+emails[k] + '",' ;
}
email_list = email_list.substring(0, email_list.length -1)
for(var k=0;k<phone.length;k++) {
phone_list = '"'+phone[k] + '",';
}
phone_list += phone_list.substring(0, phone_list.length -1)
friend_json_str = '';
friend_json_str += '{"name":"'+name + '",';
friend_json_str += '"emails":['+email_list+'],';
friend_json_str += '"phoneNumber":['+phone_list+']' ;
friend_json_str += '},';
friend_list_json_str += friend_json_str;
}
friend_list_json_str = friend_list_json_str.substring(0, friend_list_json_str.length - 1);
var user_data = get_user_data();
var len = user_data.length;
user_data = user_data.substring(0, len - 2);
user_data += friend_list_json_str + ']}';
data = "invite_data="+ user_data;
url = '/invite';
var posting = $.post(url, data);
posting.done(function(response_data) {
});
}
});
}
доступ только для чтения:
function auth() {
var config = {
'client_id': 'CLIENT_ID',
'scope': 'https://www.googleapis.com/auth/contacts.readonly'
};
gapi.auth.authorize(config, handleAuthResult);
}
Примечание: остальная часть кода такая же, как и выше
В обоих случаях АЯКС звонок не работает,
$.ajax({
url: "https://www.google.com/m8/feeds/contacts/default/full?access_token=" + token.access_token + "&max-results=70000&alt=json" + "&callback=?",
dataType: "json",
success:function(data)
Может кто-нибудь скажет мне, почему этот код не работает?
Помните, что ваш идентификатор клиента должен быть безопасным и безопасным в любое время. Я отредактировал ваш вопрос и удалил его для вас. – DaImTo
Большое спасибо DalmTo! –
Удалите '+ '& callback =?" 'Из запроса ajax. Я думаю, что это вызывает ответ JSONP вместо того, чтобы использовать ваш обратный вызов. И client_ids можно считать общедоступными, они все-таки включены в клиентскую сторону JS. Это ключи сервера/секреты, которые вы должны хранить в секрете. – abraham