近期有个mobile的项目,需要在项目中加两个功能,是在twitter和facebook上发消息的按钮,客户不想自己做界面,希望直接调用各自网站上的页面发消息。这俩网站国外很流行,国内却无法访问,也没怎么用过,不甚了了。于是开始查资料。
1、Twitter
twitter上发消息其实很简单,很多地方提供生产twitter按钮的功能,访问也完全支持get方式的访问。就是说完全可以直接输入一个url地址,就可以打开对应的twitter页面,且可以传入想要的信息内容。对比国外网站对twitter的引用和官网上提供的button按钮的说明,我们很快找到了这样一个地址,示例如下:
http://twitter.com/intent/tweet?status=i%20think%20is%20 @zsz417 http://baidu.com
这个地址用来修改用户的状态(status),不过twitter似乎也就有个状态而已,所有的信息无非就是通过status来表现的。你看,有内容,有url,还可以@某人,直接写入,就很完整了啊。当然,由于twitter中对状态有140个字符数的限制(国外的140个字符能表达充足的含义么),如果url比较长,最好通过短网址服务把网址做短喽。经过简单的几个测试后,就把该链接交给mobile组的同事去用。
不过,很快mobile组那边就找过来,说每次发twitter都得登录,那是相当的麻烦。经跟踪发现,用mobile访问twitter,它会自动重定向到mobile.twitter.com进行登录,而且cookie仅仅对mobile.twitter.com有效(当然对当前连接也是有效的),而这个网址是web版本的,它需要http://www.twitter.com/这个网址上的cookie。(这个twitter也太不地道了,咋能这样呢?)
由于英语欠佳,资料查起来也很费力,而且baidu上面的资料几乎没有有效的,而google搜索相关敏感词语时,时不时就被墙了。喵了个咪的,人在天朝,全凭想象啊,猜吧。改下访问路径:
http://mobile.twitter.com/intent/tweet?status=i%20think%20is%20 @zsz417 http://baidu.com
键入地址后,竟然跳到了@intent这个用户的页面,我了个去,还是加密连接。看来这次猜的不给力啊。
边查边猜,发现另外一种写法:
那么,是不是它有对应的mobile版的写法呢:
https://mobile.twitter.com/?status=
这个加密连接,是自动重定向上去的(我修改agent为iphone了)。那在mobile 上直接访问这个,岂不更好?急忙交给mobile组的同事去测试,OK,通过了。
备注,由于twitter中对字符数有限制(140字符),所以URL最好要考虑使用短网址服务。听说twitter官方曾经(?)默认使用bit.ly,所以注册了个帐号,申请了个key,做了下实验,发现非常好使,这里记录下:
直接使用get方式打开以下网址,返回的数据就是短网址了。
其中参数的含义分别是:
- login,就是你在bit.ly网站上注册的用户名;
- apiKey,其实就是系统分给你的key,与login必须对应;
- longUrl,是需要进行短处理的长地址;
- format,可以是txt、json、xml。
2、Facebook
facebook的资料还是有一些的,比较适合我们的,资料上有这样一个链接(注意这个用法已过期):
http://www.facebook.com/sharer/sharer.php?u=http://www.sina.com.cn&t=this is sina
其中参数u是链接,t是标题,意味着可以分享一个网页,并且可以定义title。09年很多网页中也都是这么写的。但经过测试,facebook对这个sharer进行了优化,它自动抓取了网页的title以及首页的title,甚至抓取了其中的某些图片和描述信息,另外还有个用于用户输入的框。也就是说,现在这个只有u参数的写法还是对的,t这个参数已经无效了。几经测试,并不能完成客户的需求,只好再查找其他资源。(我并没有从facebook api文档中找到这个sharer的用法,惭愧)。
在facebook api文档的对话框项目中,发现有这么个用法:
其中:
- app_id是必填,可以是123020457758183这么个值,这个值是facebook的一个应用(app)的id,叫做Cool Social App,我想这算是facebook提供的公用app吧(也可以是别的app值,会显示对应app的图标和名称);
- redirect_uri也是必填参数,在用户发布涂鸦墙消息后,返回到哪个页面。我们这个应用并没有自己的独立页面,所以返回到facebook上吧;
- message表明你要给涂鸦墙的输入框中带过去的内容文字,没有数量限制,当然,这个不是必填项目。
其他的非必填项有:
- link,链接地址;
- picture,可以显示一个图片;
- name,链接的title,显示在涂鸦墙输入框的下面第一行,字体是加粗的;
- caption,说明/摘要,显示在标题下面一行;
- description,详细介绍,显示在摘要的下面。
先留下来做记录吧,不知道facebook哪天又要修改它的api,/晕。
备注:
- facebook有个mobile的页面,http://m.facebook.com/dialog/feed?app_id=123050457758183&redirect_uri=http://m.facebook.com&message=I%27m%20not%20ignoring%20you.%20I%27m%20just%20waiting%20for%20you%20to%20talk%20to%20me%20first.%20http://baidu.com 但是很不稳定,并且在wp7现在的IE7中显示不正常,(在iphone中显示正常).需要通用的话,不妨调用www开头的。
- 注意翻 墙,另这些官网api都有,英语要好好弄啊。