【问题标题】:Facebook, Twitter, LinkedIn share link countFacebook、Twitter、LinkedIn 分享链接计数
【发布时间】:2020-10-14 20:19:48
【问题描述】:

有没有什么方法可以获取 Facebook、Twitter 和 LinkedIn 上共享链接的用户数量?

示例:某个链接被分享到 Facebook、Twitter 和 LinkedIn 的次数以计算某些内容的受欢迎程度?

如何获取我的特定 API 的共享计数?还有其他选择吗?有 API 吗?

【问题讨论】:

  • 我可以回答你的问题,但我有点困惑你为什么在你的问题中标记 jQuery ?你想动态加载这些结果吗?使用$.getJSON$.ajax?
  • 我已经删除了那个标签
  • 试试meddelare.com =)

标签: javascript facebook twitter linkedin social-media


【解决方案1】:

更新

不幸的是,API 1.1 无法计算 Twitter 分享数

参考:intgr/(number) 是分享数,所有回复都在 JSON

脸书

http://graph.facebook.com/?id=http://{URL}

返回:

{
   "id": "http://{URL}",
   "shares": intgr/(number)
}

推特

http://cdn.api.twitter.com/1/urls/count.json?url=http://{URL}

返回:

{  
   "count": intgr/(number)
   "url":"http:\/\/{URL}\/"
}

v1.1 更新

不支持 count.json 的 Twitter API 1.1 版。因此,不可能撤销推文计数。但是,我发现Tweet Buttons 使用自定义端点来获取这些数字。

这是新的端点

https://cdn.syndication.twitter.com/widgets/tweetbutton/count.json?url={URL}

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

领英

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

返回:

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

使用 jQuery 获取共享计数

参考:对于 Twitter 和 linkdIn,我必须添加 callback才能获得回复

HTML:

<p id="facebook-count"></p>
<p id="twitter-count"></p>
<p id="linkdin-count"></p>

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();

});

Complete Fiddle

更新:

Another Fiddle (returns the total shares across the 3 above)

【讨论】:

  • @Adm Azad,请您输入完整代码,我很困惑如何使用我的代码
  • 更新了我的答案,完整的工作小提琴jsfiddle.net/AdamAzad/5TxBd
  • 让我知道一件事,我们可以获取共享计数,只选择 AppId,如 facebook 和 LinkedIn 等。因为我的另一个要求是我不会传递链接,我只有 AppId,我需要获取所有链接的总共享计数.有机会吗
  • “我需要获取所有链接的总分享数”这可以通过使用JS运算符来获取总和,你能解释一下吗?
  • 自 2015 年 10 月起,Twitter 将弃用该端点,因此它将不再工作,请参阅:twittercommunity.com/t/…
【解决方案2】:

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

数据 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]

注意由于我使用的是“动态”,因此需要 .NET 4.0。还有,我是 使用官方已弃用的 JavaScriptSerializer 类, 但实际上可能不会被删除。您也可以轻松使用 正则表达式来获取这些简单的值。*

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;}

【讨论】:

【解决方案3】:

这个 Javascript 类将让您从 Facebook、Twitter 和 LinkedIn 获取共享信息。

使用示例

<p>Facebook count: <span id="facebook_count"></span>.</p>
<p>Twitter count: <span id="twitter_count"></span>.</p>
<p>LinkedIn count: <span id="linkedin_count"></span>.</p>
<script type="text/javascript">
    var smStats=new SocialMediaStats('https://google.com/'); // Replace with your desired URL
    smStats.facebookCount('facebook_count'); // 'facebook_count' refers to the ID of the HTML tag where the result will be placed.
    smStats.twitterCount('twitter_count');
    smStats.linkedinCount('linkedin_count');    
</script>

下载

https://404it.no/js/blog/SocialMediaStats.js

像这样添加到 HTML 标题中:

<script type="text/javascript" src="SocialMediaStats.js"></script>

更多示例和文档

Javascript Class For Getting URL Shares On Facebook, Twitter And LinkedIn

【讨论】:

    【解决方案4】:

    检查一下:

    //
    http://www.jsfiddle.net/eXJBs
    //
    

    //把网址改成你的,你会发现http://www.google.com把它取下来,加上你的http://www.yourdomain.com

    你也可以查看这个 facebook 开发者页面,这非常有用 https://developers.facebook.com/docs/plugins/share-button/

    【讨论】:

      【解决方案5】:

      此函数将从 facebook、g-plus、linkedin、pinterest 获取分享计数

      function social_share_counts($pageurl)
      {
          //facebook
      
          $fb_data = file_get_contents('http://graph.facebook.com/'.$pageurl);
          $fb_json = json_decode($fb_data,TRUE);
          if(count($fb_json) > 1){
              $facebook_shares = $fb_json['shares'];
          }
          else{
              $facebook_shares = 0;
          }
          //facebook
      
          //google
          $curl = curl_init();
          curl_setopt( $curl, CURLOPT_URL, "https://clients6.google.com/rpc" );
          curl_setopt( $curl, CURLOPT_POST, 1 );
          curl_setopt( $curl, CURLOPT_POSTFIELDS, '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"' . $pageurl . '","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]' );
          curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
          curl_setopt( $curl, CURLOPT_HTTPHEADER, array( 'Content-type: application/json' ) );
          $curl_results = curl_exec( $curl );
          curl_close( $curl );
          $google_json = json_decode( $curl_results, true );
      
          $google_shares = intval( $google_json[0]['result']['metadata']['globalCounts']['count'] );
          //google
      
          //linkedin
          $linkedin_data = file_get_contents('https://www.linkedin.com/countserv/count/share?format=json&url='.$pageurl);
          $linkedin_json = json_decode($linkedin_data);
          $linkedin_shares = $linkedin_json->count;
          //linkedin
      
          //pinterest
          $pinterest_data = file_get_contents('http://api.pinterest.com/v1/urls/count.json?callback=sharecount&url='.$pageurl);
          preg_match('/"count":(\d*).+$/',$pinterest_data,$match);
          $pinterest_shares = $match[1];
          //pinterest
      
          return array("facebook"=>$facebook_shares,"google"=>$google_shares,"linkedin"=>$linkedin_shares,"pinterest"=>$pinterest_shares);
      }
      
      //now check->
      
      $share_cnts = social_share_counts('https://www.facebook.com');
      echo $share_cnts['facebook'];
      

      【讨论】:

      • 测试 sdbhj sd shadjk hkdsh sakjd husadh kasjdh k