文章出處

  最近一段時間一直在研究有關Social Network的東西,這里有幾個在當前國外主流社交網站上用來顯示分享數量的API,記錄一下,今后可能會用得著。

Facebook

  Facebook將FQL(Facebook Query Language)查詢語句以URL參數的形式傳遞給服務器來實現查詢,不僅可以查詢當前頁面的Sharing count,還可以查詢許多數據。所涉及到的表和相關字段可以參考Facebook的官方文檔:https://developers.facebook.com/docs/reference/fql/

  這里還有一個Facebook sharing counter的查詢工具,直接輸入要查詢的頁面的URL地址就可以查詢該頁面在Facebook中被分享過多少次了http://www.emetello.com/facebook-share-counter/

  下面是一段通過JavaScript代碼在頁面上顯示分享到Facebook的次數,代碼通過JQuery的Ajax方法調用Facebook的查詢語句來獲取分享次數的數字。注意觀察Ajax中的url參數,其中query的值是一個FQL查詢語句,當前查詢link_stat表的share_count字段。Facebook的FQL查詢語句不支持*通配符來查詢表的所有字段。format參數用來指定返回值的類型,本例中為json對象字符串。timestamp參數是人為添加的,作用是為了避開可能的瀏覽器緩存。displaySharingCount方法負責在頁面上顯示獲取到的結果,如果數字大于三位數,則只顯示"500+",并給元素添加title屬性用以顯示完整的值;否則就直接顯示值。

function displaySharingCount(val, objId) {
    var blank = " ";
    var id = "#" + objId
    if (typeof (val) != "undefined") {
        if (val.length > 3) {
            $(id).attr("title", val);
            $(id).text(blank + "500+");
        }
        else
            $(id).text(blank + val);
    }
}

window.onload = function () {
    var currUrl = encodeURIComponent(location.href);

    $.ajax({
        url: "https://api.facebook.com/method/fql.query?query=select%20share_count%20from%20link_stat%20where%20url=%22" + currUrl + "%22&format=json&timestamp=" + new Date().getTime(),
        type: "get",
        datatype: "html",
        async: true,
        success: function (data) {
            displaySharingCount(data[0].share_count, "Facebook_count");
        }
    });
 };

 

Twitter & LinkedIn

  Twitter和LinkedIn在獲取sharing count方面很相似,都是通過一個URL來獲取返回結果,可以指定返回結果是json格式或jsonp。看下面的例子,通過jsonp來獲取Twitter和LinkedIn的sharing count值。

function getTwitterCount(obj) {
    displaySharingCount(obj.count, "Twitter_count");
}

function getLinkedInCount(obj) {
    displaySharingCount(obj.count, "LinkedIn_count");
}

function createScript(id, src) {
    var js, fjs = document.getElementsByTagName("script")[0];
    js = document.getElementById(id);
    if (js) {
        document.removeChild(js);
    }
    js = document.createElement("script");
    js.id = id;
    js.src = src;
    fjs.parentNode.insertBefore(js, fjs);
}

window.onload = function () {
    var currUrl = encodeURIComponent(location.href);

    createScript("Twitter_jscallback", "http://urls.api.twitter.com/1/urls/count.json?url=" + currUrl + "&format=jsonp&callback=getTwitterCount");
    createScript("LinkedIn_jscallback", "http://www.linkedin.com/countserv/count/share?url=" + currUrl + "&format=jsonp&callback=getLinkedInCount");
};

  LinkedIn的官方網站上有關于如何使用sharing count的介紹:https://developer.linkedin.com/retrieving-share-counts-custom-buttons

  有一個地方需要注意,那就是當前頁面的URL字符串是大小寫敏感的,而且是否encoded也會有影響。例如下面這幾個URL,雖然指向的都是同一個頁面,但是獲取到的sharing count也會有區別:

http://www.cnblogs.com/jaxu

http://www.cnblogs.com/Jaxu

http%3A%2F%2Fwww.cnblogs.com%2Fjaxu


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()