2012年9月12日星期三

Sync Tweets

我对Twitter之类的东西其实没太大兴趣,之所以用,有那么点告诉某些人我还活着的味道。可是这里的某些人,有的用Twitter,有的用人人,有的用微博,于是同步就成了个问题。

刚开始用的是Ping.fm,现在死掉了。然后用的是Weiboto,现在也死掉了。之前在安卓里用的享拍微博通,服务谈不上稳定,iOS版却还要卖钱。好吧,我自己轮一个。

GAE有免费配额,实现Jabber机器人很简单,而且访问Twitter没有墙的问题,首选。打算同步的服务有四个,豆瓣、人人、Twitter和微博。只因为是自己用,希望事情越简单越好,不想去处理复杂的OAuth,所以必须要想办法拿到长期有效的授权。

豆瓣的v1版API用了GData,处理起来各种麻烦。v2还算靠谱,无非是反编译客户端拿到个能用密码换Access Token的Key。只不过/service/auth2/token后面不能加上/,而/shuo/statuses/后面的/却不能少,大概就是这样。

人人的API设计很妙,比如status.set返回值只有“{ "result":1 }”,连个id都不给。如果想删掉,貌似只能先再来个status.gets。验证方式虽然也提供了OAuth2,可除了验证地址,其他API地址都不是Https,安全性也不好。单从API来看,完全不像一家有前途的公司。

Twitter至今还在用OAuth1,好处就是Token长期有效,只不过因为OAuth1的复杂性导致要多一个第三方库。使用API时也遇到了点问题,如果需要用POST方法请求数据,只有把数据作为参数加在URL上才能成功,POST Data的方式会失败。另外,四家的官方API Key中,Twitter的藏得最深。官方Android版中的API Key是一个bytes数组,通过算术运算才能获得真正的Key和Secret。

新浪,嗯,最敖娇。之前曾经研究过,新浪微博的官方客户端用的不是开放版API,而是另外的一套东西。因为有一些研究成果,本来是打算用的。可是部署到GAE上却报错,搜了一下发现是登录保护的问题。可我的测试账号中,压根就没启用这破玩意儿。最后发现,即使不开启登录保护,只要登录IP是国外的,一样需要输验证码。不得已,还是找了个高权限的第三方API Key,老老实实用开放版的API。

虽然最后是做到了能用的程度,可光是折腾四家的API就已经花了不少精力,有一种我这是何必的感觉…