一个支持OAuth的Twitter API Proxy——GTap
2010.8.31是一个值得纪念的日子,这一天Twitter正式终止了Basic Auth验证。官网的通知如下:
August 31, 2010 Basic Auth has been deprecated. All applications must now use OAuth.
使用OAuth验证对我等天朝人民来说就意味着至少要翻墙进行一次验证才能使用Twitter这一伟大的工具,也意味着以前基于Basic Auth的API都无法使用了,所以翅膀今天要介绍GTap这一可以OAuth的API。(大家常用的twip也在近日加入了OAuth支持,但是架设相对复杂,且作者仍在完善中,故这里先不做介绍)
GTap的安装过程如下:
1.所需环境
因为GTap是架设在Google App Engine上的,所以Google App Engine SDK for Python,在这里按照使用平台下载安装。另外还需要Python,Ubuntu下系统本身带有Python,Windows下需自行安装Python2.5或以上版本。
2.注册Twitter应用
在这里注册一个Twitter应用。“Application Name”除填写的内容会是你之后发推显示的来源,即“from xxx”;在“Application Type”的地方,选择“Browser ”;在“Default Access type”的地方,选择“Read & Write”;在“Use Twitter for login”的地方,不要打勾。至于很多人都很关心的“Callback URL”项,则不需要关心,可随意填写。完成注册后得到Consumer key、Consumer secret这两个数据。
3.注册Google App Engine应用
在App Engine 管理控制台创建以及管理 App Engine 网络应用程序。点击“创建应用程序”按钮。按照说明注册一个应用程序 ID,即一个对该应用程序唯一的名称,如gtapserver1,那么你的程序网址就是http://gtapserver1.appspot.com/
4.获取并修改GTap
然后到GTap的项目主页,在右边的Featured downloads处可以看到GTap的各种版本,这里选择最新的0.4.1,下载后解压,得到gtap-0.4.1文件夹。
编辑 app.yaml 文件,然后将 application: 设置的值从“your_application_id”更改为你在google注册的应用程序 ID,如gtapserver1。鉴于现在多数地区appspot的加密传输已被墙,所以建议把该文件第12行的“secure: always”删掉。
编辑 main.py 文件,将其中第14,15行的内容,分别改为你在Twitter申请应用时获得Consumer key和Consumer secret。
5.上传GTap
Ubuntu下:将gtap-0.4.1文件夹放到Google App Engine SDK文件夹下,然后在Google App Engine SDK文件夹处打开终端,运行命令
python appcfg.py update gtap-0.4.1
按提示输入gmail邮箱和密码(密码不明文显示)。
Windows下:与Ubuntu下基本相同,只需将终端改为命令行,运行
appcfg.py update gtap-0.4.1
6.使用GTap
首先打开你的GTap应用,按照上面的实例即为http://gtapserver1.appspot.com/ ,会看到这样的界面
点击OAuth验证的按钮(这一步OAuth验证需翻墙,方法很多,不再赘述,可以参加翅膀以前写的日志),会跳转到Twitter,登录,然后选Allow,会跳转到如下界面
然后点击you can change it now,进入下面的界面
在define your new key of this api:后面填入你喜欢的密码(这个密码就是你使用这个api所要用的密码,可以与Twitter密码不同),然后点击Change the Key提交就好了。
这样一来你的API就架设好了,在支持API的客户端中直接使用就可以了,不要忘记结尾的“/”,如http://gtapserver1.appspot.com/
PS.
http://gtapserver1.appspot.com/ 并非翅膀所架设,感谢原作者~
twitter-api-proxy – an proxy of twitter api – Google Project Hosting
https://code.google.com/p/twitter-api-proxy/
“这是一个基于appengine的twitter api 代理.
它只提供:
纯API代理
支持Oauth/Xauth (请查看 注意事项)
对客户端透明,无须人工干涉oauth授权过程
兼容basic方式授权的client
使用方法:
自建api proxy
去twitter申请一个app,并勾上读写权限,并设置app类型为client类型.
下载代码,部署到你的appengine上.
将Config.py中的属性配置成你的app相应内容(oauth_consumer_key和oauth_comsumer_secret)
使用支持自定义api的第三方应用(如果有basic和oauth两个模式选择的话,依然选择basic的),应用地址为http://your.appengine.com/twitter.(或者修改Entry.py中的handle 以及app.yaml里的配置)
注意事项
请务必以basic api proxy的方式使用此proxy.原因见原理部分.
对来自 客户端 的oauth和xauth的支持取决于客户端client的实现.看客户端在做ouath签名的时候是拿twitter的url还是拿proxy的url.只有以twitter的url做签名的才能通过proxy.
原理:
当basic的客户端通过VerifyCredentials进行验证的时候,拦截此请求,转由appengine完成oauth验证过程.此过程将使用basic header里的用户名密码进行oauth授权.授权页面由appengine分析页面结果自动完成,无需人工干涉.
oauth完成后,将用户的用户名,md5之后的密码,以及oauth_token和oauth_token_secret存放在appengine上.
对于其他api call,将从http header里获取basic authorize中的用户名密码,根据用户名取得存在appengine上的信息.通过对比保存的密码的md5值,决定是否继续代理api call
密码验证通过后,对于Appengine来说,它会截获 http://your.appengine.com/twitter , twitter后面的字符串模式,直接拼接到实际的REST请求串中.
利用前面从appengine取得的用户保存的信息,替换http header里的Authorization 为oauth格式
由appengine发送请求到达twitter的REST服务器,返回结果.
appengine将返回结果作为相应,返回到客户端.
帮助
有bug或者其他什么问题反馈,请移步http://code.google.com/p/twitter-api-proxy/issues/list/,或��联系 @zizon ”
Downloads – twitter-api-proxy – an proxy of twitter api – Google Project Hosting
https://code.google.com/p/twitter-api-proxy/downloads/list
没有用过