Sharing count on Facebook, Twitter, and LinkedIn
最近一段时间一直在研究有关Social Network的东西,这里有几个在当前国外主流社交网站上用来显示分享数量的API,记录一下,今后可能会用得着。

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×tamp=" + 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
Sharing count on Facebook, Twitter, and LinkedIn的更多相关文章
- [转]Code! MVC 5 App with Facebook, Twitter, LinkedIn and Google OAuth2 Sign-on (C#)
本文转自:https://www.asp.net/mvc/overview/security/create-an-aspnet-mvc-5-app-with-facebook-and-google-o ...
- 移动端折腾国外分享(facebook、twitter、linkedin)
一.前言 国内做HTML5页面,关注最多就是微信分享了,之前也写过关于微信分享的文章,可以点击查看:分享相关文章 再者,就是国内的其它分享,比如常用的新浪微博.腾讯微博.QQ空间等等,最方便的就是直接 ...
- share.js一键分享到微博、QQ空间、QQ好友、微信、腾讯微博、豆瓣、Facebook、Twitter、Linkedin、Google+、点点等
官网上面 https://github.com/overtrue/share.js非常详细的介绍了share.js他的使用 使用方式有:第一:使用 npm npm install social-sha ...
- Code! MVC 5 App with Facebook, Twitter, LinkedIn and Google OAuth2 Sign-on (C#)
http://www.asp.net/mvc/overview/security/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2- ...
- FaceBook Twitter实习生简历求内推
写在博客里面吧. 有一个朋友,男,博士在读,研究方向为图像处理,计算机视觉相关. 想在在读期间有一些海外实习经历.不知道哪位博友,有相关的人脉,求内推啊.内推成功的话请吃大餐,哈哈!
- ios学习:swift中实现分享到微博、facebook,twitter等
在swift中打开分享功能原来是如此的简单. 1.首先须要 import Social 2.在分享button事件以下 var controller:SLComposeViewController = ...
- Spring Boot 学习(1)
文 by / 林本托 Tip 做一个终身学习的人. Spring Boot 初体验 Spring Boot 包含了很多 start(Spring boot 中 的叫法,就是一个模块,后文统一称模块,便 ...
- How to increase TX Power Signal Strength of WiFi
转自:https://www.blackmoreops.com/2013/10/27/how-to-increase-tx-power-signal-strength-of-wifi/ This gu ...
- Top 5 Free Screen Recording Softwares For Windows
[转]Top 5 Free Screen Recording Softwares For Windows 该文章是转过来的,因为这里介绍了好几款免费的录制视频的软件.我自己需要使用,也许大家也有需求. ...
随机推荐
- C# 中的IOCP线程池
原文地址:http://www.theukwebdesigncompany.com/articles/iocp-thread-pooling.php PartOne : Introduction 当使 ...
- codeforce div 377
#include <bits/stdc++.h> using namespace std; #define pb push_back #define lb lower_bound #def ...
- 天气api
http://php.weather.sina.com.cn/xml.php?city=%D6%D8%C7%EC&password=DJOYnieT8234jlsK&day=0 cit ...
- getpid 与 gettid 与 pthread_self
获取进程的PID(process ID) #include <unistd.h> pid_t getpid(void); 获取线程的TID(thread ID) 1)gettid或者类似g ...
- SQL Server Profiler使用方法
一.SQL Server Profiler使用方法 1.单击开始--程序--Microsoft SQL Server 2005--性能工具--SQL Server Profiler,如下图: 2. ...
- Tornado sqlalchemy
上篇文章提到了,最近在用 Python 做一个网站.除了 Tornado ,主要还用到了 SQLAlchemy.这篇就是介绍我在使用 SQLAlchemy 的过程中,学到的一些知识. 首先说下,由于最 ...
- [转] mhvtl虚拟磁带库的安装与应用
转自:candon123 -- http://candon123.blog.51cto.com/704299/388192/ 1.获取mhvtl: 官方网站:http://mhvtl.nimsa.u ...
- [z] error C2471 错误
error C2471: 无法更新程序数据库“d:/Work/ Project/FBReader/debug/vc90.pdb” fatal error C1083: 无法打开程序数据库文件:“d:/ ...
- eclipse里面设置JVM参数的问题
在run----run configuration---Agruments里面设置JVM的参数: -Xms256m -Xmx1024m 肯定还有别的方式设置,今天就先写这一种方法.待续...
- SDWebImage实现原理--两张图带你看懂
SDWebImage底层实现有沙盒缓存机制,主要由三块组成:1.内存图片缓存,2.内存操作缓存,3.磁盘沙盒缓存 SDWebImage GitHub地址 版本4.0.0 一.SDWebImage时序图 ...