API контактов Google с клиентской библиотекой Google JavaScript

Я пытаюсь работать с Google Contacts API v3.

Из-за аутентификации и авторизации OAuth2 я начал с клиентской библиотеки API Google для JavaScript . У меня нет проблем с этой частью доступа к API.

Но после выполнения части аутентификации я не знаю, что делать дальше. Могу ли я использовать google-api-javascript-client для API контактов Google v3? В списке поддерживаемых javascript-клиентом Google API API контактов не отображается. Но у меня есть полный доступ с помощью инструмента OAuth 2.0 Playground.

Я действительно не понимаю, какой клиент лучше всего работает с последней версией Google Contacts API. Что насчет gdata-javascript-client?


person einsA    schedule 31.12.2012    source источник
comment
какие-нибудь обновления к этому? Похоже, проблема все еще существует, я не могу использовать (или, возможно, не знаю), API контактов Google v3. кто-нибудь еще нашел решение?   -  person sufyan.shoaib    schedule 23.08.2013


Ответы (7)


Чтобы использовать api контактов v3 с токеном аутентификации, предоставленным gapi (клиентская библиотека Google JS), это полезно, используя alt=&json

$.getJSON('https://www.google.com/m8/feeds/contacts/default/full/?access_token=' + 
             authResult.access_token + "&alt=json&callback=?", function(result){
      console.log(JSON.stringify(result));
});
person ganoro    schedule 29.08.2013
comment
примечание: это подлежит ограничениям политики перекрестного происхождения - person Jason; 01.03.2014
comment
Значит, нет возможности сделать это с помощью клиентской библиотеки javascript? gapi.client.load ('контакты', 'v3', function () {}); Например? - person rncrtr; 10.06.2014
comment
круто, это спасло мне день - person Natus Drew; 15.02.2015
comment
Я столкнулся с той же проблемой, я решил ее, сначала получив токен доступа, а затем напрямую вызвав API. Это связано с тем, что api javascript (gapi) не поддерживает получение контактов Google. Поскольку это было довольно хлопотно, я написал об этом в блоге здесь: labs.magnet.me/nerds/2015/05/11/ - person Wouter Willems; 03.06.2015

Я знаю, что это старый вопрос, но этот вопрос возникает, когда вы смотрите, как читать информацию о контактах из учетной записи Google.

Если вам нужен только доступ к контакту, чтобы импортировать его или показать адрес электронной почты, номера телефонов или другую информацию, и вам не нужно его изменять, вы можете использовать People API (https://developers.google.com/people/). Для javascript вы можете проверить вкладку образцов.

Я создал суть, которая является почти образцом из Google, но с добавлением параметров requestField.

https://gist.github.com/ddbb1977/7a4b408ed17c7249252a

person Danny Boyd    schedule 24.03.2016
comment
как насчет того, чтобы моя единственная веб-страница с номером была отправлена ​​контакту Google .... что является предпочтительным (но простым) способом? - person gumuruh; 12.09.2019

Проблема, с которой вы сталкиваетесь, заключается в том, что API контактов v3 - это более старый API, который работает с устаревшим Клиентская библиотека GData. Поэтому он несовместим с новым клиентом JavaScript API Google.

На данный момент вам нужно загрузить и использовать клиентскую библиотеку GData. Для получения дополнительной информации о различиях между библиотекой GData и клиентом Google API обратитесь к этому недавнему вопросу SO: gapi.client.load по сравнению с google.load

person Brendan    schedule 02.01.2013
comment
Спасибо за ваше разъяснение! Я пытаюсь работать с GData Client Lib. К сожалению, аутентификация не работает. Я думаю, что это общая проблема, как в интерактивном примере из Гугл тоже не работал .. Надеюсь, это временная проблема. - person einsA; 13.01.2013

К сожалению, API контактов Google не работает с новой клиентской библиотекой Javascript. Он работает только с клиентской библиотекой GData. Я пробовал работать с клиентской библиотекой GData, но это сложно, поскольку вы получаете предупреждения в документации на каждом этапе, когда библиотека устарела.

Поэтому я использовал гидрид,

  1. используя новую клиентскую библиотеку, чтобы пройти аутентификацию.
  2. Используйте 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

Для получения списка контактов с помощью Google Plus используйте это: -

<script src="https://apis.google.com/js/client.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script>
  function auth() {
    var config = {
      'client_id': 'OAUTH_CLIENT_ID',
      'scope': 'https://www.google.com/m8/feeds'
    };
    gapi.auth.authorize(config, function() {
      fetch(gapi.auth.getToken());
    });
  }

  function fetch(token) {
    $.ajax({
    url: "https://www.google.com/m8/feeds/contacts/default/full?access_token=" + token.access_token + "&alt=json",
    dataType: "jsonp",
    success:function(data) {
              console.log(JSON.stringify(data));
    }
});

}

В теле HTML: -

<button onclick="auth();">GET CONTACTS FEED</button>

На выходе будет поле с контактом, содержащим номер телефона.

Убедитесь, что вы получили идентификатор клиента из консоли разработчика Google с правильным uri перенаправления.

person firebolt_ash    schedule 14.04.2015

Вот что мы обнаружили для получения индивидуальных данных:

var data = (JSON.stringify(data.feed.entry[0].gd$email, null, 4));
console.log(data);

Если вы запустите JSON.stringify (data), вы увидите все заголовки, которые вы можете вызвать.

person JoseAngel ConchelloBueyes    schedule 12.10.2015

google contact v3 - ваш лучший друг в этой работе

здесь вы можете найти все возможные конечные точки запроса https://developers.google.com/google-apps/contacts/v3/

как и для всего списка контактов, это конечная точка https://developers.google.com/google-apps/contacts/v3/#retrieving_all_contacts

После аутентификации вы можете получить запрос на этот URL-адрес, чтобы получить весь список контактов. Это пример на python http://code.google.com/p/gdata-python-client/source/browse/samples/contacts/contacts_example.py

person mtaleb    schedule 02.01.2013