不能免俗的09总结
GNOME3 试用感想

使用GTAP突破twitter的Oauth限制

Tiger Soldier posted @ 2010年9月06日 05:47 in 未分类 with tags GAE twitter , 7181 阅读

从2010年8月31日开始,twitter强制采用oauth进行认证,而oauth认证的一个关键是用户名和密码必须在twitter官网进行认证。而对于兲朝用户来说,这就意味着之前的第三方代理无效,必须翻墙才能使用了。电脑上的话还好办,但是手机上始终没有太好的翻墙手段。因此需要一个新的twitter代理,能够做到用户使用原本的basic auth访问它,而它使用oauth访问twitter,从而破解oauth的限制。

要搭建twitter代理,最经济的方式就是使用Google的 App engine 服务了。在网上找了找,一个名为 gtap 的GAE程序已经加入了oauth支持。

安装

GTAP的安装文档 已经说得很清楚了。要注意的是需要在twitter上注册自己的app,这一步还是需要翻墙的。

使用GTAP

GTAP并不是安装就直接能用的。需要使用它通过oauth在twitter上把自己的账号认证一次,这样才能在自己架设的GTAP上使用自己的账号。

进入自己架设的GTAP页面,单击“Sign in with Twitter”进入twitter,会询问是否允许这个app(就是安装时注册的那个)访问你的账号。Allow之后跳回GTAP的页面,上面显示了一个Key,那个Key就是用来在GTAP上登录密码。

之后的步骤就和basic auth一样了,在twitter软件里填上API,用户名不变,密码使用刚才提示的Key。由于Key是随机生成的,不好记,可以用旁边的“change your key here”来改为一个好记的,甚至是自己的密码(这个不推荐,因为目前是明文保存key的)。

完全穿越Oauth限制

在GTAP中,需要手动认证自己的账号才能使用,这一步需要翻墙。而我的目标是和原有basic auth完全一致,搭建好API后,只要在客户端上使用这个API,输入自己的用户名密码就能使用了。因此我hack了代码,当新的用户登录时,自动模拟浏览器操作完成整个Oauth流程,并以用户的密码为key,这样就成为了一个完全的basic auth转oauth的代理了。代码我已经发到了 gtap的issuelist 上,直接替换原来的文件就可以使用(需修改consumer key和consumer secret)。

由于模拟浏览器行为实质上是解析twitter页面,如果页面有改动的话很可能会失效,希望twitter不要做得那么绝吧。

正常使用搜索功能

twitter的API是使用api.twitter.com的,但是搜索例外,使用的是search.twitter.com。GTAP为了解决这个问题,需要让用户自行设置客户端的搜索API。但是有些客户端是没有这个选项的,因此我也作了些修改,可以判断是否是搜索请求。这些修改也一并包含在提交的issue里,希望可以被合并到项目中吧。

  • 无匹配
jack 说:
Sep 06, 2010 07:16:16 AM

呃,search好像不起作用啊
貌似twitter那边限制了?
D 09-05 08:12AM 22.556
400
D 09-05 08:12AM 22.556
https://api.twitter.com/search.json?q=%E5%9B%A7&rpp=200
D 09-05 08:12AM 22.556
D 09-05 08:12AM 22.557
D 09-05 08:12AM 22.557
{'q': '\xe5\x9b\xa7', 'rpp': '200'}
D 09-05 08:12AM 22.557
{"request":"/search.json?rpp=200&oauth_nonce=11095438013777800869&oauth_timestamp=1283699542&oauth_consumer_key=bXWwoJWepwmKDwdOrA&oauth_signature_method=HMAC-SHA1&q=%E5%9B%A7&oauth_version=1.0&oauth_signature=qRBdLQGcnsuKHkHLHtzD55r8MAg%3D&oauth_callback=http%3A%2F%2Fxxxxx.appspot.com%2Foauth%2Fverify","error":"Rate limit exceeded. Clients may not make more than 150 requests per hour."}

Head_small
Tiger Soldier 说:
Sep 06, 2010 07:19:22 AM

@jack: 用的是我修改后的版本么?你的搜索被定向到api.twitter.com而不是search.twitter.com了

jack 说:
Sep 06, 2010 08:23:29 AM

就是你修改的版本,可能是gwibber的问题

jack 说:
Sep 06, 2010 08:26:30 AM

补充,因为Gwibber无法直接用twitter,所以用的statusnet的协议

linxing 说:
Oct 03, 2010 11:31:56 PM

Google APP 不是和谐了?


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter