получить весь список контактов пользователя (включая номер телефона) из входа в Google в javascript

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

эта официальная ссылка

дает возможность получить контактную информацию (включая номер телефона), но я не совсем уверен, как это сделать в javascript. Я погуглил и обнаружил, что люди используют API контактов v2 и v1 для получения этой информации. Но и там я не нашел подходящего примера. Моя текущая реализация с использованием google api (gapi) дает мне контакты в этом формате

displayName: "Jamie Lannister" etag: "" XXXXXXXX-YYYYYYYYYYYYYYYYYY / Wl9XXXXXXXXXXXXXZ9-cJsx-wUY "" id: "107108760XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX4.com xxxxxxxxxxxxxxx / xxxxxxxxxxk / xxxxxx-xxx / photo.jpg? sz = 50 "rel =" nofollow "> https://lh4.googleusercontent.com/-9Iyxxxxxxx/xxxxxxxxxxxxxxx/xxxxxxxxxxk/xxxxxx-xxx/photo.jpg?s "proto: Тип объекта:" plus # person "objectType:" person "url:" https://plus.google.com/107108760XXXXXXXXXXXX

Я получил это по этой ссылке и по этой ссылка.

Мой вопрос, действительно ли возможно получить контакты пользователя google + или google с номерами телефонов? Если да, пожалуйста, ответьте здесь. Есть ли другой способ сделать это?

О, кстати, этот вопрос пока не подлежит вознаграждению. Правильный ответ получит награду +50 в следующие 2 дня.


person drulabs    schedule 17.11.2013    source источник
comment
Неважно, я понял. Я получаю все контакты.   -  person drulabs    schedule 16.12.2013
comment
Как ты получил номер телефона? Поделись, пожалуйста!   -  person marty331    schedule 16.01.2014
comment
Ну вот, я добавил ответ, извините за задержку, я только что увидел ваш комментарий.   -  person drulabs    schedule 16.01.2014


Ответы (1)


Я использовал следующую функцию javascript (httpGet), чтобы получить контакты Google с именем и номером. URL-адрес, который я передал в параметре "theUrl": "https://www.google.com/m8/feeds/contacts/[email protected]/full?access_token=" + authToken + '& max-results = 9999' "

function httpGet(theUrl)
    {
        $.ajax({
            type: "GET",
            url: theUrl,
            dataType: "jsonp",
            success: function (xml) {               
                $(xml).find('entry').each(function(){
                    var name = '';
                    var number = '';
                    $(this).find("gd\\:phoneNumber").each(function(){
                        number = $(this).text();
                    });
                    $(this).find("title").each(function(){
                        name = $(this).text();
                    });

                    if(number!=null && number.length>0)
                    {
                        number = number.replace(/[^0-9]/g,'');
                        userContacts.push(name+'-'+number);
                    }
                });


            },
        });
    }

Объяснение: по умолчанию Google возвращает определенное количество контактов, чтобы все контакты передавали действительно большое число в параметре max-results (отсюда 9999). authToken - это то, что вы получаете после авторизации пользователя. адрес электронной почты: после получения авторизации вам также будет предложен адрес электронной почты. вот как я это сделал:

function getEmail(){
        gapi.client.load('oauth2', 'v2', function() {
            var request = gapi.client.oauth2.userinfo.get();
            request.execute(getEmailCallback);
        });
    }

function getEmailCallback(obj){
        email = '';
        if (obj['email']) {
            email = obj['email'];
            //here you get the email address of the user who just signed in
        }
    }

пробел здесь - это объект javascript api Google. добавьте этот скрипт, и все готово

script type="text/javascript" src="http://www.google.com/jsapi"/ (add jQuery script too)

Без вызова ajax в httpGet () вы получите ошибку соответствия между доменами. То, что вы получаете после httpGet упомянутого URL-адреса, представляет собой файл xml, весь успех внутри метода httpGet () предназначен для анализа этого xml, вы также получите кучу другой информации, если потребуется, проанализируйте и их (мне нужен был только контакт номер и имя). если вам нужна учетная запись Google с контактами, просто войдите в контакты Google и добавьте туда несколько тестовых номеров телефонов.

Излишне говорить, что для этого вам также понадобятся идентификатор клиента, секрет, ключ API и т. Д. Пожалуйста, перейдите по ссылке ниже, чтобы узнать подробности. переменная контактов пользователя в httpGet () содержит все контакты пользователя, разделенные дефисом. Шаблон регулярного выражения в httpGet () состоит в том, чтобы выбирать только номера из контактного номера, иначе вы можете получить что-то вроде этого (123) 456 7890.

подробнее прямо из Google

person drulabs    schedule 16.01.2014