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 该文章是转过来的,因为这里介绍了好几款免费的录制视频的软件.我自己需要使用,也许大家也有需求. ...
随机推荐
- BootLoader 详解(2)
BootLoader的stage1 1.基本的硬件初始化 这是BootLoader一开始就执行的操作,其目的是为stage2的执行以及随后的kernel的执行准备好一些基本的硬件环境.它通 常包括以下 ...
- Maven-3.2.2安装配置
(1)安装JDK,这里是1.7.0_51 (2)Maven-3.2.2下载地址:http://mirrors.cnnic.cn/apache/maven/maven-3/3.2.2/binaries/ ...
- NDK相关以及同步相关博客收集
http://www.cnblogs.com/heiing/archive/2013/01/20/2868268.htmlhttp://blog.sina.com.cn/s/blog_461c24d5 ...
- web.py+mysql插入中文提示query = query.encode(charset) UnicodeEncodeError: 'latin-1' codec can't encode characters in position 86-100
对于中文编码的问题,总会出现各种各样恶心的错误,还不知道应该怎么解决,首先,你从最开头就应该关注编码问题,尽量保证所有的编码方式都是一致的 用python+web.py+mysql来写程序,首先要保证 ...
- swift 定制自己的Button样式
swift的UIButton类中有些公开方法可以重写,所以,如果想写出自己的UIButton,只要继承UIButton类,并重写相应的方法即可. 系统的UIButton可以添加图片,也可以添加标题,但 ...
- ios9 http请求不能使用
为了跟新新版本的ios9版本,使用http请求时会碰到无法加载数据的情况 App Transport Security has blocked a cleartext HTTP (http://) r ...
- Boo who
function boo(bool) { // What is the new fad diet for ghost developers? The Boolean. //return bool; r ...
- 第二次作业#include <stdio.h> int main() { int a,b,c,d,e; printf("请输入一个不多于五位的整数:\n"); scanf("%d",&a); if(a>=100000||a<=0) { printf("输入格式错误! \n"); } else { if(
1 判断成绩等级 给定一百分制成绩,要求输出成绩的等级.90以上为A,80-89为B,70-79为C,60-69为D,60分以下为E,输入大于100或小于0时输出"输入数据错误". ...
- iOS.ReactNative-4-react-native-command-line-tool
Command line tool: react-native 1. react-native 是一个命令行工具 1.1 react-native简介 运行以下命令: ls -lt `which re ...
- 洛谷P1738 洛谷的文件夹
原题目:点我 题目是一个略水的题,我机制地用面向对象做了...所以代码量急剧加大,100行233 模拟即可,字符串处理麻烦点.如果没有找到子文件夹就新建文件夹,如果有就进入该文件夹. 提示:高能,指针 ...