
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
Project Information
- License: New BSD License
- 75 stars
- svn-based source control