使用javascript获取gmail联系人Google Contacts API

时间:2014-03-02 06:59:04

标签: javascript google-contacts

它始终显示您请求的页面无效。 如何使用谷歌联系人api获取javascript联系人 我有有效的范围和客户ID

google.load('gdata', '2.x');
    debugger
    google.setOnLoadCallback(function () {
        if (window.location.hash == "") {
            if (!checkLogin()) {
                logMeIn();
            } else {
                var feedUrl = "https://www.google.com/m8/feeds/contacts/default/full";
                query = new google.gdata.contacts.ContactQuery(feedUrl);
                query.setMaxResults(5000);
                myService = new google.gdata.contacts.ContactsService('exampleCo-exampleApp-1.0');
                myService.getContactFeed(query, function (result) {
                    document.cookie = "g314-scope-0=";
                    window.opener.parseGmailContacts(result.feed.entry);
                    close();
                }, function (e) {
                    alert(e.cause ? e.cause.statusText : e.message);
                });
            }
        }
    });
    function logMeIn() {
        scope = "https://www.google.com/m8/feeds";
        var token = google.accounts.user.login(scope);
    }
    function logMeOut() {
        google.accounts.user.logout();
    }
    function checkLogin() {
        scope = "https://www.google.com/m8/feeds/";
        var token = google.accounts.user.checkLogin(scope);
        return token;
    }

我认为

有问题
  var token = google.accounts.user.checkLogin(scope);
            return token;

令牌返回“”(此处为空值),如何获取令牌的值以获取联系人,PLZ帮助

5 个答案:

答案 0 :(得分:11)

我遇到了同样的问题,我通过首先检索访问令牌解决了它,然后直接调用API。这是因为javascript api(gapi)不支持检索谷歌联系人。

由于这很麻烦,我在这里写了一篇关于它的博文:https://labs.magnet.me/nerds/2015/05/11/importing-google-contacts-with-javascript.html

基本上这就是我解决它的方法:

   $config['first_url'] = $config['base_url'].'?'.http_build_query($_GET);

答案 1 :(得分:0)

尝试使用我朋友的组件。生活会变得更轻松,更漂亮。

http://googlewebcomponents.github.io/google-contacts/components/google-contacts/

答案 2 :(得分:0)

要使用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>

输出将包含一个包含电话号码的联系人字段。

确保通过适当的重定向uri从google开发者控制台获取客户端ID。

答案 3 :(得分:0)

每次单击按钮时,弹出窗口都会出现轻微问题。将下面的代码段添加到Wouters解决方案将阻止弹出窗口闪烁。

function authorize(){
    if($scope.authorizationResult){
      handleAuthorization($scope.authorizationResult);
    }else{
gapi.auth.authorize({client_id: clientId, scope: scopes, immediate:false}, handleAuthorization);
       } 
    }

答案 4 :(得分:0)

    <!DOCTYPE html>
<html>
    <head>
        <meta charset='utf-8' />
        <script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
    </head>
    <body>
        <script type="text/javascript">
        // Developed By: Garun Mishra.
            var clientId = 'Your Client Id';
            var apiKey = 'Your Api Key';
            var scopes = 'https://www.googleapis.com/auth/contacts.readonly';

            $(document).on("click", ".getGmailContact", function () {
                gapi.client.setApiKey(apiKey);
                window.setTimeout(authorize);
            });

            function authorize() {
                gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: false}, handleAuthorization);
            }

            function handleAuthorization(authorizationResult) {
                if (authorizationResult && !authorizationResult.error) {
                    $.get("https://www.google.com/m8/feeds/contacts/default/thin?alt=json&access_token=" + authorizationResult.access_token + "&max-results=500&v=3.0",
                            function (response) {
                                //process the response here
                                //console.log(response);
                                var entries = response.feed.entry;
                                var contacts = [];
                                for (var i = 0; i < entries.length; i++) {
                                    var contactEntry = entries[i];
                                    var contact = [];

                                    //console.log(contactEntry);
                                    // Get Full Name.
                                    if (typeof (contactEntry.gd$name) != "undefined") {
                                        if (typeof (contactEntry.gd$name.gd$fullName) != "undefined") {
                                            if (typeof (contactEntry.gd$name.gd$fullName.$t) != "undefined") {
                                                contact['name'] = contactEntry.gd$name.gd$fullName.$t;
                                            }
                                        }
                                    }

                                    // Get Phone Number
                                    if (typeof (contactEntry['gd$phoneNumber']) != "undefined") {
                                        var phoneNumber = contactEntry['gd$phoneNumber'];
                                        for (var j = 0; j < phoneNumber.length; j++) {
                                            if (typeof (phoneNumber[j]['$t']) != "undefined") {
                                                var phone = phoneNumber[j]['$t'];
                                                contact['phone'] = phone;
                                            }
                                        }
                                    }

                                    // get Email Address
                                    if (typeof (contactEntry['gd$email']) != "undefined") {
                                        var emailAddresses = contactEntry['gd$email'];
                                        for (var j = 0; j < emailAddresses.length; j++) {
                                            if (typeof (emailAddresses[j]['address']) != "undefined") {
                                                var emailAddress = emailAddresses[j]['address'];
                                                contact['email'] = emailAddress;
                                            }
                                        }
                                    }
                                    contacts.push(contact);


                                }
                                // To Print All contacts
                                console.log(contacts);

                                // You can fetch other information as per your requirement uncomment the given line and read the data.
                                //console.log(entries);
                            });

                }
            }
        </script>
        <script src="https://apis.google.com/js/client.js"></script>
        <button class="getGmailContact">Get My Gmail Contacts</button>
    </body>
</html>