随着在国外一些开放API的成功,国内开放的趋势尤其是在SNS领域也开始涌现,实际上开放的需求不局限SNS领域,所有的互联网应用都可以从开放API获得更多的用户使用等潜在的价值。Tim在这方面也进行了一些尝试和思考,这里初步探讨开放API产品及开发方面实践中需要面对的几个问题。
Archive for the ‘SNS’ Category
国内开放API平台实践的一些问题
Facebook平台设计(一)
为了研究Facebook platform的设计, 我们可以从最早的第一个版本f8 07开始了解,当时是由Facebook创始人兼CEO Mark Zuckerberg 在2007年5月f8开发者会议上发布的。根据当时的数据是,50%以上的Facebook用户会每天都访问Facebook,超过同行3倍以上。
为了理解Facebook平台,我们可以从Facebook相册说起。Facebook相册虽然只提供了最简单的特性,比如不能存高像素原图,没有编辑工具等,非常简单,但是Facebook的相册流量是是其他所有相册(Flickr, Picasa…)流量之和的2倍以上。为什么?这就是Mark介绍的Social Graph的力量。
1. 用户A上传图片,他所有好友都能看到。
2. 用户A继续在图片上tag people(标注图片上的好友),这个tag的图片会出现在被tag好友B profile wall上,接着B的好友接着可以看到这个图片(受privacy设置控制,默认开启)。
特别是第2点它扩大了传播范围,在Facebook认为,第2点比1更为重要,Facebook平台的意义就是在这里。”we build the platform optimize for build apps for social graph”,开放平台的意义就是让扩展应用将social graph发扬光大。
“在Facebook开放平台以前,social network封闭式平台,但是今天这种情况结束了”
Facebook Platform的三大目标
1. Apps深度整合到Facebook平台(Deep Integration Into Facebook Website)
- app可以集成到用户profile
- app拥有独立的首页(canvas page),首页完全是应用自己控制的,可放任何内容,包括广告。
- app可以以用户身份发布feed
- app可以发送消息,邀请,提醒等
一个应用只要被用户授权访问他的profile之后,应用就可以调用api获取到比如user/friend/application/privacy information,Facebook API接口也值得各种平台设计者学习。比如用户API接口
2. 病毒式的传播(Mass Distribution through the Social Graph)
传播的核心是feed体系(从09年的眼光来看,Twitter的feed可能比它做得更出色,甚至造成了威胁,并进一步引发它最近的homepage改版)。App可以发布3种不同类型的Feed
- application story,相当与应用添加提醒,比如A添加了某应用。
- simple story, feed里面表现为一行文本。
- full story, 详细,可以预览图片,视频等。
关于feed可参看另外一篇技术分析文章:Facebook的feed格式设计
App可以发送notification(提醒),request(邀请)。Facebook还提供平台级别的工具如friend selector供app使用。Facebook还通过应用嵌入到Profile通过exposure让更多的用户来使用,比如用户看到好友Profile某个应用有趣也会立即add。
通过以上途径,促进应用的传播,促进信息的传播,促进人的社会化交流。
3. 商业机会(New Business Opportunity)
canvas page可以放任何广告,也可以进行电子商务进行销售,app可以获得所有收入。对于这两种方式,Facebook都是持支持态度。
视频:Mark Zuckerberg Keynote Speech f8 2007
http://www.facebook.com/video/video.php?v=28202665043&ref=mf
Facebook的feed格式设计
SNS平台通常有各种格式的feed,如果考虑到feed需要在平台自身、扩展应用及第三方应用或客户端展示的话,通常需要一个统一的规范,而不是发布者本身随意输出最终展示的文字。而且也需要考虑图片、视频等在feed中的统一定义。在facebook它是这样实现的
- feed是自描述的,即它不是由生产者决定最终格式,也不是前端决定。而是通过template机制来进行。
- template在平台中可以由开发者注册,注册时需要定义字段及最终展示样式,如
{*actor*} 在斗地主游戏中升到 {*credit*} 级
- 发布的feed内容仅包含字段数据,也就是变量的值,json格式。
{"credit": "80"}
- 前端需要显示feed时候调用feed模板,再替换字段得到feed内容
Tim 在斗地主游戏中升到 80 级
- 模板需要定义两个,模板标题及模板内容(展示feed详细内容),前端根据需要决定只显示标题还是全部都显示。
- “target”, “actor”是系统保留字段,代表目标对象和当前用户,{*actor*}必须放在模板标题开始位置。
- “images”, “flash”, “mp3″, “video” 是系统保留字段,无需在模板中定义。但这些内容只会在详细feed界面输出。即只要feed内容里面有这个字段值,界面就会自动显示。
- facebook文档中没有规定feed长度限制。
- 每个开发者最多只能注册100个模板。