• 2009-10-14

    Google App Engine搭建Twitter API Proxy(详细图文版)【已失效】 - [技术心得]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://walkingway.blogbus.com/logs/48414404.html

    本文只在搭建basic api,鉴于twitter已全面采用oauth登陆,此方法已失效,请参考搭建oauth api

    本文仅限于技术讨论,与穿墙打洞无关,大部分资料来自互联网和google,结合本人亲手实践,补充而成。适合完全没有概念的新手学习。欢迎follow我的twitter:@walkingway

    一.扫盲

    1.什么是Twitter API proxy?

    总的说来HTTP请求有两种不同形式,POSTGET(其实还有其它的一些请求,本文简略)。“Twitter REST API”也是通过这两种形式来调用的。

    那么我们通过第三方应用或者第三方编程语言来调用Twitter REST API是不是和通常我们使用的代理相类似.说到这里Twitter API proxy不言而喻!

    简单地说,就是把客户端发过来的POST和GET请求转发到原始API地址,并将返回的http header和内容返回给客户端,实现了原始twitter API的所有功能。而对客户端来说,除了提供一个可供配置的API地址选项,不需要做任何代码上的更改.(此段话为twip作者介绍,简单明了)

    下面举个场景,通常你要查看某上推友的信息最常用方法是在twitter.com上直接查看,其实调用的是下面请求:
    GET http://twitter.com/statuses/show/twitterapi.json

    如果你通过第三方应用或者第三方编程调用就是另外的一种请求方法了,假设你在http://none.com/api架设了一个Twitter API proxy,那么你可以用以下方式调用相同的API:

    GET http://none.com/api/status/show/twitterapi.json 得到的效果是相同的.

    2.Google app engine 是什么?

    Google app engine 是 Google 提供的一个在线应用程序平台,支持 Python和Java。简单的说是在 Google app engine 上面直接运行用 Python/Java 写的程序,由 Google app engine 提供网络空间和带宽。

    二.目标

    ok,我们下一步就是要在Google app engine上搭建属于我们自己的twitter api proxy,不会编程怎么办呢?没关系,互联网时代,开源的东东太多了,今天我们用到的一部分源代码就来自Birdneshttp://code.google.com/p/birdnest/ ),一个相当出名的Twitter api proxy,来自google code上的一个开源项目,运行它需要有支持python语言的空间,google app engine支持python,我们就以google app engine来介绍架设方法,所以说嘛,google是一个相当不错的东西。

    三.实现

    1.环境准备:Google App Engine

    先要注册Google App Engine,注册地址 http://appengine.google.com/ ,然后建立一个application

     

     

    目前第一次使用需要验证用户手机,输入手机号码就收验证码即可

     

     

    填写 Application Identifier (输入你想要的应用程序地址,相应会得到一个 yourid.appspot.com 的域名,记住这个。) 和 Application Title (标题,随意啦)以及勾选同意服务条款,点 Save 即完成创建。

     

     

    此外,还需要下载安装Google APP Engine的开发环境,注意Python版本,需要是2.5系列的,不能使用2.6或更高的版本,否则运行会出错。

      Google App Engine SDK 下载地址 http://code.google.com/intl/zh-CN/appengine/downloads.html

      Python 2.5.4 下载地址 http://www.javaeye.com/news/4633

    都很简单,一路Next安装即可。

    2.环境准备:Birdnest

    下载birdnest要注意是下载分支branches/gae别下载主干trunk,否则更新到GAE上也不能用,会报错。这里需要用到一个SVN工具下载,例如:TortoiseSVN

    TortoiseSVN 下载地址:http://tortoisesvn.net/downloads (注意后面的Language packs下载,英文好的童鞋请无视)

    TortoiseSVN使用方法:下载安装完毕后,在Google APP Engine安装目录(如我的E:\Google\google_appengine)下新建一个文件夹,随意起个名字(我的justinwayy),右键单击文件夹,在弹出菜单中选择SVN检出,然后在版本库URL中填入Birdnest/gae的urlhttp://birdnest.googlecode.com/svn/branches/gae/),点击确定,成功检出。

     

     

    进入检出的文件夹,用记事本打开一个叫app.yaml文件,将第一行的application后的参数nest修改为自己的应用名(也就是之前提到的yourid),点击保存,ok。

    3.发布应用到GAE

    准备好了上面的一切后,就可以发布这个应用到自己的Appspot上了,打开命令提示符(点击 开始>运行>cmd),进入 X:\Google\google_appengine 目录(输入 cd X:\Google\google_appengine\ 即可),输入以下命令行:appcfg.py update 目录名(我的justinwayy),中间会要求输入Gmail的用户名密码,之后就可以使用了。你创建的API地址应该是yourid.appspot.com/api/

     

     

     

    四.使用

    到此为止,我们已经成功搭建起了专属于自己的Twitter API Proxy,就是yourid.appspot.com,可用于一切允许自定义API功能的客户端上,快去试试吧。

      在twhirl里的使用方法是,打开账号管理Accounts manager,选择laconi.ca账户类型,输入:[你的twitter帐号名]@yourid.appspot.com,密码为Twitter密码,即可使用。

      在twitterfox里的使用方法是,打开 C:\Documents and Settings\Administrator\Application Data\Mozilla\Firefox\Profiles\ 随机信息 .default\extensions\twitternotifier@naan.net\components目录,编辑 nsTwitterFox.js文件,找不到的话直接在Documents and Settings中搜索nsTwitterFox.js文件,编辑该文件的38行,将其修改为 var TWITTER_API_URL = http://yourid.appspot.com/api/ 即可。

    ----------------------------------感谢的分界线----------------------------------

    本文参考来源:月光博客小众软件


    历史上的今天:

    秋天别走 2010-10-14

    收藏到:Del.icio.us




    评论

  • In other countries, golf as a healthy and elegant sport
  • 事实上,女人有的时候更狂躁,而且比男人的狂躁更可怕,女人的心是一块细腻的丝巾,男人的心是一张网,丝巾不会漏掉一粒微小的沙石,但碰到利器最终难免破败的命运,网的命运则相反。
  • 你好,我按照帖子搭好了,但是appspot.com/api/不能登陆。appspot.com/有显示Birdnest。登陆别人搭建的也可以使用。到底哪一步错了呢
  • Jose:
    提示NET ERROR, 要崩溃了,请指教!
    walkingway回复xjbtlym说:
    我自己的justinwayy.appspot.com在twhirl测试是好的 还有要用birdnest r97版本
    2010-06-10 09:25:12

  • 参照你的教程,一直顺利的搭建,但是我在地址栏内输入HTTP://XXX.APPSPOT.COM/api/时,则显示页面正在维护,将XXX.APPSPOT.COM作为ENDPOINT输入UBERTWITTER时,则显示出错 想知道,哪一步我做的不对?如何解决这个问题?
    walkingway回复xjbtlym说:
    将 https://xxx.appspot.com/api 输入ubertwitter试试 appspot不稳定有时候是连不上的
    2010-06-08 09:21:40
  • 刚刚吃完饭又试了一下,终于收到确认短信了。
    TwitterAPI搭建成功。感谢博主的文章!
    另外有个问题,现在yourid.appspot.com直接就是birdnest,但我想将其放到yourid.appspot.com/t/之下,不知该怎么弄?
    walkingway回复小杰克说:
    你研究下源码吧,试着改改这个app.yaml,具体我也没试过。自己研究才有乐趣嘛~
    2009-10-16 17:09:27
  • 等了半个多小时都等不到那条确认短信,再次重发了两次都没反应……