Facebook,Twitter,LinkedIn,分享链接数量

Saj*_*ith 22 twitter facebook social-media linkedin

有没有什么方法可以让用户在Facebook,Twitter,LinkedIn上分享一些链接

例如:有多少次链接被分享给Facebook,Twitter,LinkedIn以计算某些内容的受欢迎程度.

如何分享我的特定api?还有其他选择吗?有一些api?

Ada*_*zad 29

更新

不幸的是,API 1.1无法实现Twitter共享计数

参考:intgr/(number)股票数量和所有回复JSON

Facebook的

http://graph.facebook.com/?id=http://{URL}
Run Code Online (Sandbox Code Playgroud)

返回:

{
   "id": "http://{URL}",
   "shares": intgr/(number)
}
Run Code Online (Sandbox Code Playgroud)

推特

http://cdn.api.twitter.com/1/urls/count.json?url=http://{URL}
Run Code Online (Sandbox Code Playgroud)

返回:

{  
   "count": intgr/(number)
   "url":"http:\/\/{URL}\/"
}
Run Code Online (Sandbox Code Playgroud)

v1.1更新

Twitter API版本1.1不支持count.json.因此,不可能退出推文计数.但是,我发现Tweet按钮使用自定义端点来获取这些数字.

这是新的端点

https://cdn.syndication.twitter.com/widgets/tweetbutton/count.json?url={URL}
Run Code Online (Sandbox Code Playgroud)

我不确定Twitter是否会将此端点关闭,并在它们正式关闭v 1.0时替换它,但它可以工作.

LinkedIn

http://www.linkedin.com/countserv/count/share?url=http://{URL&format=json
Run Code Online (Sandbox Code Playgroud)

返回:

{
   "count": intgr/(number),
   "fCnt": "intgr/(number)",
   "fCntPlusOne":"intgr/(number) + 1", // increased by one
   "url":"http:\/\/{URL}"
}
Run Code Online (Sandbox Code Playgroud)

使用jQuery获得共享

参考:对于Twitter和linkdIn我必须添加callback 以获得响应

HTML:

<p id="facebook-count"></p>
<p id="twitter-count"></p>
<p id="linkdin-count"></p>
Run Code Online (Sandbox Code Playgroud)

JS:

$('#getJSON').click( function () {

    $('#data-tab').fadeOut();
    $URL = $('#urlInput').val();

    // Facebook Shares Count
    $.getJSON( 'http://graph.facebook.com/?id=' + $URL, function( fbdata ) {
        $('#facebook-count').text( 'The URL has ' + ReplaceNumberWithCommas(fbdata.shares) + ' shares count on Facebook')
    });

    // Twitter Shares Count
    $.getJSON( 'http://cdn.api.twitter.com/1/urls/count.json?url=' + $URL + '&callback=?', function( twitdata ) {
        $('#twitter-count').text( 'The URL has ' + ReplaceNumberWithCommas(twitdata.count) + ' shares count on Twitter')
    });

    // LinkIn Shares Count
    $.getJSON( 'http://www.linkedin.com/countserv/count/share?url=' + $URL + '&callback=?', function( linkdindata ) {
        $('#linkdin-count').text( 'The URL has ' + ReplaceNumberWithCommas(linkdindata.count) + ' shares count on linkdIn')
    });

    $('#data-tab').fadeIn();

});
Run Code Online (Sandbox Code Playgroud)

完成小提琴

更新:

另一个小提琴(返回3个以上的总股数)

  • 更新了我的答案,完整的工作小提琴http://jsfiddle.net/AdamAzad/5TxBd/ (3认同)
  • 截至2015年10月,Twitter将弃用该端点,因此它将不再有效,请参阅:https://twittercommunity.com/t/a-new-design-for-tweet-and-follow-buttons/52791 (2认同)

Saj*_*ith 9

我找到了答案...... !!!!!!!

数据URL您可以在此处找到数据

Facebook    http://graph.facebook.com/?ids=YOURURL
Twitter http://urls.api.twitter.com/1/urls/count.json?url=YOURURL
Google  https://clients6.google.com/rpc [see below for JSON-RPC]
Run Code Online (Sandbox Code Playgroud)

注意:由于我使用"动态",这需要.NET 4.0.另外,我正在使用官方折旧的JavaScriptSerializer类,但实际上可能不会被删除.您还可以轻松使用Regex来获取这些简单的值.*

int GetTweets(string url) {

    string jsonString = new System.Net.WebClient().DownloadString("http://urls.api.twitter.com/1/urls/count.json?url=" + url);

    var json = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize(jsonString);
    int count = (int)json["count"]; 

    return count;
}

int GetLikes(string url) {

    string jsonString = new System.Net.WebClient().DownloadString("http://graph.facebook.com/?ids=" + url);

    var json = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize(jsonString);
    int count = json[url]["shares"];

    return count;
}

int GetPlusOnes(string url) {

    string googleApiUrl = "https://clients6.google.com/rpc"; //?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ";

    string postData = @"[{""method"":""pos.plusones.get"",""id"":""p"",""params"":{""nolog"":true,""id"":""" + url + @""",""source"":""widget"",""userId"":""@viewer"",""groupId"":""@self""},""jsonrpc"":""2.0"",""key"":""p"",""apiVersion"":""v1""}]";

    System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(googleApiUrl);
    request.Method = "POST";
    request.ContentType = "application/json-rpc";
    request.ContentLength = postData.Length;

    System.IO.Stream writeStream = request.GetRequestStream();
    UTF8Encoding encoding = new UTF8Encoding();
    byte[] bytes = encoding.GetBytes(postData);
    writeStream.Write(bytes, 0, bytes.Length);
    writeStream.Close();

    System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
    System.IO.Stream responseStream = response.GetResponseStream();
    System.IO.StreamReader readStream = new System.IO.StreamReader(responseStream, Encoding.UTF8);
    string jsonString = readStream.ReadToEnd();

    readStream.Close();
    responseStream.Close();
    response.Close();

    var json = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize(jsonString);
    int count = Int32.Parse(json[0]["result"]["metadata"]["globalCounts"]["count"].ToString().Replace(".0", ""));

    return count;}
Run Code Online (Sandbox Code Playgroud)