WedX - журнал о программировании и компьютерных науках

Как получить контакты Gmail с помощью JavaScript?

Что такое вызов Ajax, который я должен сделать, чтобы получить контакты Gmail с помощью JavaScript? У меня уже есть токен OAuth пользователя, который я получил, потому что пользователь зарегистрировался на моем сайте с помощью Google.


  • Привет, добро пожаловать в 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

Ответы:


1

Если вы используете 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

Список типов запросов, которые вы можете отправлять, и их параметры доступны здесь:

08.06.2013
  • (Токен недействителен - токен AuthSub имеет неправильную область действия) Это ошибка, которую я получаю. Мой запрос ajax выглядит так: $.ajax({ url: google.com/m8/feeds /contacts + электронная почта +/full?access_token= + gmail_access_token + &alt=json, тип данных: JSONP, успех: function(contacts_data){ console.log(contacts_data); } }); 08.06.2013
  • Я гуглил, но решения, похоже, не работают. 08.06.2013
  • @DarwishGani: у вас неправильная область действия (т. е. набор разрешений) для вашего токена. Если вы измените объем своих разрешений при получении токена, вы сможете его использовать. 09.06.2013
  • Я активировал API контактов в Google до получения Client ID, нужно ли мне активировать другой API на этой странице? code.google.com/apis/console/#project:552738833011:services< /а> 09.06.2013
  • оцените помощь до сих пор. 09.06.2013

  • 2

    Чтобы получить контакты пользователей с помощью 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 здесь

    11.09.2013
  • Совершенно хороший способ. Я бы предложил использовать собственную библиотеку Google (не ориентированную на браузер) для авторизации и использовать метод jqery $.get(). 11.05.2015
  • Есть ли способ выборочно получить контакты для автозаполнения пользовательского интерфейса. Когда пользователь вводит For, следует загружать соответствующие значения, загруженные во время выполнения. 29.03.2017
  • @CodeGuy Не могу сказать. Я очень давно не использовал API Google для подобных вещей. Один из способов сделать это — загрузить контакты и отфильтровать их с помощью какой-нибудь библиотеки, например TypeAhead. Вы можете поискать аналогичный вопрос в SO, и если вы не можете его найти, вы можете задать новый. 03.04.2017
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]