Что такое вызов Ajax, который я должен сделать, чтобы получить контакты Gmail с помощью JavaScript? У меня уже есть токен OAuth пользователя, который я получил, потому что пользователь зарегистрировался на моем сайте с помощью Google.
Как получить контакты Gmail с помощью JavaScript?
- Привет, добро пожаловать в Stack Overflow. Возможно, у вас не совсем правильные условия поиска, но посмотрите, поможет ли это: developers.google. .com/google-apps/contacts/v3 08.06.2013
- google.com/m8/feeds/contacts{userEmail}/full Похоже, что Мне нужно сделать запрос GET к этому URL-адресу, однако я не понимаю, как Google знает, что у меня есть токен, который разрешает мне получать эти контакты. 08.06.2013
Ответы:
Если вы используете OAuth2 через JavaScript, вы можете использовать Google Contacts API, но вам нужно будет получить авторизацию, отправив правильную область разрешений в Google при получении токена доступа, то есть https://www.google.com/m8/feeds
. (ссылка)
Поскольку вы уже знаете, как получить токен доступа, это так же просто, как вызов API с правильным запросом. Чтобы получить все контакты для вашего пользователя, достаточно сделать асинхронный запрос к API для получения необходимой информации. Например, если {userEmail}
— это адрес электронной почты пользователя, а {accessToken}
— ваш токен доступа, просто создайте адрес GET
для следующего URI:
https://www.google.com/m8/feeds/contacts/{userEmail}/full?access_token={accessToken}&alt=json
Список типов запросов, которые вы можете отправлять, и их параметры доступны здесь:
Чтобы получить контакты пользователей с помощью OAuth, сначала необходимо указать область контакта в запросе. Если вы используете ChromeExAuth, вы должны написать:
var oauth = ChromeExOAuth.initBackgroundPage({
'request_url' : 'https://www.google.com/accounts/OAuthGetRequestToken',
'authorize_url' : 'https://www.google.com/accounts/OAuthAuthorizeToken',
'access_url' : 'https://www.google.com/accounts/OAuthGetAccessToken',
'consumer_key' : 'anonymous',
'consumer_secret' : 'anonymous',
'scope' : 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile https://www.google.com/m8/feeds/',
'app_name' : 'MyApp'
});
Параметр области выше перечисляет 3 области: электронная почта пользователя, профиль и контакты (google.com/m8/feeds/contacts
).
Чтобы получить их контакты после того, как пользователь авторизует токен, вы должны отправить такой запрос:
var url = "https://www.google.com/m8/feeds/contacts/default/full";
oauth.sendSignedRequest(url, onContacts, {
'parameters' : {
'alt' : 'json',
'max-results' : 99999
}
});
И обратный вызов для запроса может выглядеть так:
function onContacts(text, xhr) {
contacts = [];
var data = JSON.parse(text);
for (var i = 0, entry; entry = data.feed.entry[i]; i++) {
var contact = {
'name' : entry['title']['$t'],
'id' : entry['id']['$t'],
'emails' : []
};
if (entry['gd$email']) {
var emails = entry['gd$email'];
for (var j = 0, email; email = emails[j]; j++) {
contact['emails'].push(email['address']);
}
}
if (!contact['name']) {
contact['name'] = contact['emails'][0] || "<Unknown>";
}
contacts.push(contact);
}
};
Чтобы просмотреть массив контактов, вы можете просто напечатать в консоли:
console.log(contacts);
Вы можете ознакомиться с руководством по Google OAuth здесь
$.get()
. 11.05.2015