zoukankan      html  css  js  c++  java
  • 国外社交网站获取分享数量APIs

      之前有一篇文章详细介绍了如何获取网页在FacebookTwitterLinkedIn社交平台上分享的数量,点击这里查看。这里再扩充一下!

    Twitter


    GET URL:

    http://cdn.api.twitter.com/1/urls/count.json?url=http://stylehatch.co

    返回结果:

    {
        "count":528,
        "url":"http://stylehatch.co/"
    }

    Facebook


    GET URL:

    http://graph.facebook.com/?id=http://stylehatch.co

    返回结果:

    {
       "id": "http://stylehatch.co",
       "shares": 61
    }

    Pinterest


    GET URL:

    http://api.pinterest.com/v1/urls/count.json?callback=&url=http://stylehatch.co

    返回结果:

    ({"count": 0, "url": "http://stylehatch.co"})

    LinkedIn


    GET URL:

    http://www.linkedin.com/countserv/count/share?url=http://stylehatch.co&format=json

    返回结果:

    {
        "count":17,
        "fCnt":"17",
        "fCntPlusOne":"18",
        "url":"http://stylehatch.co"
    }

    Google Plus


    POST URL:

    https://clients6.google.com/rpc?key=YOUR_API_KEY

    POST body:

    [{
        "method":"pos.plusones.get",
        "id":"p",
        "params":{
            "nolog":true,
            "id":"http://stylehatch.co/",
            "source":"widget",
            "userId":"@viewer",
            "groupId":"@self"
            },
        "jsonrpc":"2.0",
        "key":"p",
        "apiVersion":"v1"
    }]

    返回结果:

    [{
        "result": { 
            "kind": "pos#plusones", 
            "id": "http://stylehatch.co/", 
            "isSetByViewer": false, 
            "metadata": {
                "type": "URL", 
                "globalCounts": {
                    "count": 3097.0
                }
            }
        } ,
        "id": "p"
    }]

    StumbledUpon


    GET URL:

    http://www.stumbleupon.com/services/1.01/badge.getinfo?url=http://stylehatch.co

    返回结果:

    {
        "result":{
            "url":"http://stylehatch.co/",
            "in_index":true,
            "publicid":"1iOLcK",
            "views":39,
            "title":"Style Hatch - Hand Crafted Digital Goods",
            "thumbnail":"http://cdn.stumble-upon.com/mthumb/941/72725941.jpg",
            "thumbnail_b":"http://cdn.stumble-upon.com/bthumb/941/72725941.jpg",
            "submit_link":"http://www.stumbleupon.com/submit/?url=http://stylehatch.co/",
            "badge_link":"http://www.stumbleupon.com/badge/?url=http://stylehatch.co/",
            "info_link":"http://www.stumbleupon.com/url/stylehatch.co/"
        },
        "timestamp":1336520555,
        "success":true
    }

      这里有一个网站封装了一个小插件,专门用来在页面上显示社交网站分享工具条,可以直接拿过来用,比较方便!http://sharrre.com/

      FacebookTwitterLinkedIn比较常用,给出调用API的例子:

    // Facebook
    $.getJSON("http://graph.facebook.com/?id=http://stylehatch.co", function (d) {
        $("#fackbook_count").text("The Facebook Share count is: " + d.shares);
    });
    
    // Twitter
    $.getJSON("http://cdn.api.twitter.com/1/urls/count.json?url=http://stylehatch.co&callback=?", function (d) {
        $("#twitter_count").text("The Twitter Share count is: " + d.count);
    });
    
    // LinkedIn
    $.getJSON("http://www.linkedin.com/countserv/count/share?url=http://stylehatch.co&callback=?", function (d) {
        $("#linkedin_count").text("The LinkdeIn Share count is: " + d.count);
    });

      IE浏览器可能会无法正确获取到Facebook返回的数据,可以尝试在URL后面加上&callback=?,这样JQuery会将它当成JSONP来调用。

      Facebook还有另一个API返回XML数据,调用方法是这样的:

    $.get("http://api.facebook.com/method/links.getStats?urls=http://stylehatch.co", function (d) {
        $("#fackbook_count").text("The Facebook Share count is: " + $(d).find("total_count").text());
    });

      如果在IE浏览器下出现No Transport错误而无法获取到Facebook返回的数据,尝试在JavaScript代码的最前面加上$.support.cors = true;允许跨域访问数据。

    将代码进行封装

      我们将上面FacebookTwitterLinkedIn三个社交网站的API进行封装,以方便页面调用。

    $.fn.getShareCount = function (url) {
        var self = this;
        var displayShareCount = function (val, obj) {
            if (!isNaN(val) && val > 0) {
                obj.show();
                if (val > 999) {
                    obj.attr("title", val);
                    obj.text("500+");
                }
                else
                    obj.text(val);
            }
        };
    
        return {
            facebook: function () {
                $.get("http://api.facebook.com/method/links.getStats?urls=" + url, function (d) {
                    var c = $(d).find("total_count").text();
                    self.each(function () { displayShareCount(c, $(this)); });
                });
            },
            twitter: function () {
                $.getJSON("http://cdn.api.twitter.com/1/urls/count.json?url=" + url + "&callback=?", function (d) {
                    self.each(function () { displayShareCount(d.count, $(this)); });
                });
            },
            linkedin: function () {
                $.getJSON("http://www.linkedin.com/countserv/count/share?url=" + url + "&callback=?", function (d) {
                    self.each(function () { displayShareCount(d.count, $(this)); });
                });
            }
        };
    };

      然后在页面上这样调用:

    $(function () {
        var shareUrl = window.location.href.toLowerCase();
    
        $('#fackbook_count').getShareCount(shareUrl).facebook();
        $('#twitter_count').getShareCount(shareUrl).twitter();
        $('#linkedin_count').getShareCount(shareUrl).linkedin();
    });
  • 相关阅读:
    BZOJ2870 最长道路
    BZOJ1316 树上的询问
    BZOJ2238 Mst
    BZOJ4242 水壶
    [BeiJing2010组队]次小生成树Tree
    CODEVS1403 新三国争霸
    牛客网NOIP赛前集训营-提高组(第六场) C-树
    JSOI2008 最小生成树计数
    BZOJ2654 Tree
    牛客网NOIP赛前集训营-提高组(第六场)B-选择题
  • 原文地址:https://www.cnblogs.com/jaxu/p/4502301.html
Copyright © 2011-2022 走看看