用GAE搭建自己的个性化推҉特҉API

本文将以尽可能最详细的方法,讲述使用Gtap搭建自己Twitter API的整个流程,并尽可能保证每一个步骤都配有截图做参考,以便大家理解。不过这样一来,文章版面可能就会被拉的较长,所以。。。就不罗嗦多余的话了。。。 正文开始。。。

- 搭建部分 -

首先需要到 Google Appengine 新注册一个程序(一定不要上传到以前申请的别的APP上)。注册方法非常简单,和前几天写的“用GAE来搭建自己专用的翻҉墙҉代҉理҉ ”的开头部分一样。

注册好Google Appengine,得到了 xxx.appspot.com 的域名后,下面就正式开始搭建这个Twitter API了。

首先需要先翻墙访问http://dev.twitter.com。然后注册一个新的App(如上图)。

注册时所填的表单,名称,说明,和网址,都可以随便写自己喜欢的。但一定要注意上图中红线圈起来的部分,也就是 Application,Callback URL,Default Access type,这三处。Application Type 要选择“Browser”,Callback URL地址要填写“http://gtap.appspot.com/oauth/verify”,Default Access type 要选择“Read & Write”。

成功注册了App后,会返回一个包含各种信息的页面,其中包含接下来需要用到的 Consumer keyConsumer secret。将此页面暂时保留。

接下来,点击这里下载Gtap,然后解压到本地硬盘中。进入gtap的文件夹,用你习惯的记事本工具打开 main.py 文件,然后修改 14,15行的 CONSUMER_KEYCONSUMER_SECRET(如上图),将图中“小明同学的KEY”替换成你刚刚在Twitter申请到的 Consumer key,把“小明同学的密钥”替换成你的 Consumer secret。然后保存。

接下来,打开 app.yaml,修改第一行,将上图中“小明同学的程序名”替换成你在Google Appengine新申请到的名称。如果你不是在我这里下载的gtap,那么还需要确认上图中,最后一行 secure 那里是“optional”。确认无误后,保存并关闭。

程序已经准备完毕,下面运行 Google App Engine Launcher 来讲程序上传到GAE。点击“File – Add Existing Application…”添加程序目录。

注意一点,这个无法通过SDUpload这个第三方的上传工具上传。。。很残念。。。如果你没有安装过Google App Engine的客户端,那么需要先下载并安装Python2.7(可能被墙,请随时翻墙下载),然后在下载安装Google App Engine即可。

在Google App Engine Launcher中添加好程序后,点击工具栏的“Deploy”,之后会弹出一个窗口,输入你的Google帐号和密码开始上传。

上传时的提示窗口是这个样子的。。。你不需要等待很长时间,当你看到窗口中提示你“You can close this window now.”的字样时,就可以关闭Google App Engine Launcher了。这时你已经完成了全部工作。接下来就是如何使用这个API了。。。

- 使用部分 -

API已经搭建好了,你可以翻墙点击上图中的“Sing in with Twitter”按钮,验证一下后自己一个人使用,也把你申请的 xxx.appspot.com 这个地址发给你的好友,他们只需要经过一步简单的验证就可以使用了。

※验证的过程中,需要开启代理,并先登录Twitter的网站。

点击“Sign in with Twitter”链接后,会跳转到Twitter的API验证页面(如上图),点击“Allow”按钮,同意应用程序访问你的帐户。

接着,Twitter的API页面验证完毕后,会再次跳转会你的 xxx.appspot.com 的页面,并给你一个表格(如上图),上面显示的是你Twitter的用户名,密钥。在“the new key”的栏中,填入你要修改的新的密钥。可以填写你的Twitter密码(但不推荐),一般随便填一个你能记住的单词,网址,邮箱。。。就可以。这个密钥相当于你通过这个API来链接Twitter的一个验证密码。

一切已经准备就绪,接下来使用那些支持API的客户端来登录你的Twitter就可以了。。。

因为我这里的客户端有限(平时我都是用Chrome的扩展来上推的),只测试了 TweetDeck和Spaz两个桌面客户端,非常好用,速度很快。

以TweetDeck的设置来举例,进入软件的选项,然后在“Accounts”中,添加或修改你的Twitter帐户,点击“Advanced Options”,输入你的API地址,也就是 “http://xxx.appspot.com/”。千万记得最后的斜杠“/”别忘了。。。呵呵。。。然后在上面填上你的Twitter用户名,和。。。不是你Twitter的密码哦。。。呵呵。。。 这里的密码要填刚刚上面让你修改的那个API的密钥,就是让你随便改成单词,网址,或邮箱的那个API的密钥。然后保存。。。

现在开始。。。你不需要翻墙,也可以用这些支持API的客户端来上推和发推了。。。呵呵。。。:)

已经测试过没任何问题的客户端有:TweetDeck,Spaz,以及Chrome浏览器的推特扩展 Chrowety。

已知目前无法使用这个API的客户端有:Chrome浏览器的推特扩展 Chrome bird。(这个可以用Chrowety替换,经过长时间的测试,Chrowety现在比以前稳定多了,几乎不再出现发推出囧的BUG了。)

最后,附上一张通过个性化API发推的效果截图:

至此,整个流程讲解完毕。。。 如果还有疑问,可以在下方留言。

如果讲解到这个程度还是无法搭建。。。 我也可以把此教程中搭建的API共享出来给大家使用。。。 但出于种种不可抗拒原因,我不会公开发布。如果需要,请到Twitter上DM找我要(Twitter:@newChen)。(同样出于种种不可抗拒原因,Follower的数量太少的,即使DM我,可能我也不会回复的。。。抱歉。。。)

最后附上一个小段子,小娱乐一下。。。

高官:小姑娘,你得小心点!我可是有后台的人!

姑娘:你一样也得小心点哦,我可是有Twitter的人。

高官:(“▔□▔)

姑娘:╮( ̄▽ ̄”)╭

全文完。

- 以上 -

—————— by:热心于推广翻҉墙҉和推҉特҉的 夜の猫

    • mining
    • 九月 4th, 2010 12:29上午

    哈哈,本来不想评论的,一如既往老老实实用echofon。只是过来恭喜文章上了功夫网博客

    • liu_zhenwei
    • 九月 3rd, 2010 11:52下午

    拜求大神 lzw320923@hotmail.com

    • liu_zhenwei
    • 九月 3rd, 2010 11:48下午

    我想请你帮我申请1个 可以吗?
    我实在无能无力了 我申请了 好多了。坚决不行。

    • K
    • 九月 3rd, 2010 9:02下午

    终于照猫画虎完成了,不容易。谢谢博主的详细解说。
    有补充的一点就是在上传时add的路径选择gtap的路径就好。这个我还猜了一阵呢。菜鸟果然是要手把手教啊。。。。。。
    再次感谢

    • Jerry
    • 九月 3rd, 2010 7:38下午

    博主
    前面都成功了,但在修改api密码时,点击“change the key”后,显示 Can not find user from db, or invalid old_key。

    是了几次都一样,该怎么办呀?

    • 注意下用户名的大小写。。。前面的留言也有和你一样情况的。。。

    • napbonking
    • 九月 3rd, 2010 5:25下午

    tweetdeck表示可以用。。chrowety表示不能用

    • Chrowety需要验证后,在选项中设置对应的API,然后登录是选择用API登录,然后在下面输入验证用的密钥(就是在API页面修改的那个KEY)。就可以用了。

        • napbonking
        • 九月 3rd, 2010 6:45下午

        终于知道为什么了= =。。gtap0.4版是对大小写敏感的。我一直用小写的名字去登录和我srceen name不搭= =。。貌似0.4.1版修正了这个问题= =。。

    • liu_zhenwei
    • 九月 3rd, 2010 5:08下午

    额 那个问题解决了
    为什么 上传时候一直显示
    2010-09-03 17:05:04 Running command: “['C:\\Python26\\pythonw.exe', '-u', 'C:\\Program Files\\Google\\google_appengine\\appcfg.py', '--no_cookies', u'--email=liu.zhenwei@twinova.com', '--passin', 'update', u'C:\\Documents and Settings\\Administrator\\\u684c\u9762\\gtap']“

    • 检查下app.yaml 里面的程序名是否正确。 确认自己电脑中使用的是IPV4而没有用IPV6的Host。登录到Google appengine,确认已经创建好了对应的APP。

        • liu_zhenwei
        • 九月 3rd, 2010 5:25下午

        好吧 我晚上回家再试一下。现在在公司。谢谢您的指点。如有疑问,还来请教。

        • Battrey
        • 九月 3rd, 2010 5:53下午

        望楼主诲人不倦。。
        那再请问一下,如果用的就是IPV6的Host该怎么办呢?刚才访问我的API时候一直404,后来发现上传的时候在You can close this window now之前和楼主的截图不一样,也是如楼上显示的那样Running command什么什么,大概就是这个原因了。。|||
        折腾好几个钟头了。。希望您再指点一下。。。

        • 如果是IPV6的Host,就暂时换回到IPV4的Host就可以了。。。
          等上传完毕后,再换回IPV6即可。

      • Chat
      • 九月 28th, 2010 2:53下午

      路径里不能有中文。俺也有这个问题,刚琢磨出来的。

    • liu_zhenwei
    • 九月 3rd, 2010 4:30下午

    为什么我安装了 gae 说我 没安装python 呢
    我在官网下的2.7 是不是解压了就行了呢?
    windows xp 系统
    求教 拜谢

    • 解压后要安装。。。
      如果安装后GAE还是找不到Python,就手动在GAE上指定一下Python的目录。

    • 求教啊
    • 九月 3rd, 2010 3:53下午

    好像又成功了

    • 求教啊
    • 九月 3rd, 2010 3:47下午

    最后到修改自己的KEY时,最后一行弹出
    BadValueError: Property token is not multi-line

    怎么办啊!!

    • 你修改一个别的KEY试试,比如一个单词,或者短语什么的。

    • charles
    • 九月 3rd, 2010 3:19下午

    我也是修改api密码时,点击“change the key”后显示 Can not find user from db, or invalid old_key.可用户名和key都正确啊

    • 呃。。。 还从来没遇到过这个情况。。。 检查检查CONSUMER_KEY 和 CONSUMER_SECRET是否正确,然后重试几次试试呢。。。

    • FoloXyu
    • 九月 3rd, 2010 3:13下午

    我想请问作者,我在google app engine里面的My Applications建立了好几个没用的Applications,能删掉么?

    • 已经创建的APP可以停止,但无法删除,不过程序的版本可以随便换。

        • FoloXyu
        • 九月 3rd, 2010 3:34下午

        怎么个方法,能否赐教?重新上传能替换掉么?

        • 可以更换的。。。
          比如,以前注册了一个APP名字是XXX,上传的程序是翻墙用的代理程序。现在不想要了,想把XXX这个地址换成推特的API。那么就将推特API的程序版本号修改为一个和以前代理程序不一样的版本好,比如以前的是1,那么推特的API程序就把版本号改成2。然后上传。接着登录到XXX程序的GAE页面,在 Administration – Versions 中,将版本2的程序(就是推特API那个)设置为默认程序就行了。如果以前那个翻墙的程序不要了,直接点删除删掉就行。。。
          当然。。。 更简单的方法。。。 就是直接上传就能覆盖掉。。。就当以前没传过程序。。。

            • FoloXyu
            • 九月 3rd, 2010 3:49下午

            非常感谢您的耐心解答!!

    • Battrey
    • 九月 3rd, 2010 2:39下午

    我想请教一下,上传的时候我等了很久都没出现You can close this window now,然后我关掉GAE的客户端想重启了再上传,但是重启的时候就打不开了,还出现一个See the logfile’F:\GAE\launcher\GoogleAppEngineLauncher.exe.log’ for details 的窗口。。请问是哪出错了。。?菜鸟一只,忘不吝赐教。。~

    • 你安装的Python是什么版本的?建议安装2.7的,不要安装2.7以上的,容易出问题。

        • Battrey
        • 九月 3rd, 2010 2:48下午

        我就是从您这里下载的。。我看见楼下那位FoloXyu遇到的问题和我的一样,不知道他怎么解决的。。

          • FoloXyu
          • 九月 3rd, 2010 3:10下午

          找到GoogleAppEngineLauncher.exe.log,把下面的“No option ‘name’ in section: ’1′”改成“No option ‘name’ in section: ’0′”,再到系统盘:\Documents and Settings\用户\Google删除里面所有的配置文件即可。记住上传的时候貌似文件路径不能有中文,否则就会这样。

            • Battrey
            • 九月 3rd, 2010 4:13下午

            非常感谢~终于折腾到最后了。。
            但是还是想请教一下,LZ所说的那个“你可以翻墙点击上图中的“Sing in with Twitter”按钮”,是在什么地方。。?遍寻不获啊。。

            • 访问你的API地址(就是 xxx.blogspot.com),就看见了。
              文中每个截图下面都有详细的步骤说明。

    • aen
    • 九月 3rd, 2010 2:05下午

    为什么我登陆上TweetDeck后,所有的tweet都不能显示中文?

    • TweetDeck需要在设置里面将字体设置(COLORS/FONT)改为国际支持(INTERNATIONAL),才行。

    • FoloXyu
    • 九月 3rd, 2010 1:28下午

    googleappengine打不开,我怎么上传?已经安装python了,打开出现一个错误“see the logfile、。。。。。details”

    • 不是用PYTHON传,PYTHON是编程的,用Google App engine luancher传到Google app engine上。如果以前没用过,需要先注册,然后申请APP。具体可自行Google之。

        • FoloXyu
        • 九月 3rd, 2010 1:43下午

        我的意思是Google App engine luancher打不开,不过我已经解决了,就是上传的很慢,一直反复的check again in 60 seconds

      • FoloXyu
      • 九月 3rd, 2010 1:40下午

      已经解决了

        • Battrey
        • 九月 3rd, 2010 2:43下午

        遇到的问题和我一样。。请问怎么解决的。。?

    • yam
    • 九月 3rd, 2010 12:10下午

    修改api密码时,点击“change the key”后显示“Can not find user from db, or invalid old_key.”哪里出错了呢?

  1. 这个API和Gravity使用的API是一样的吗?

  2. 很详尽的教程,已经按照着一步步成功搭建出来了。
    有一个疑问:这个API能与朋友分享吗?多人能同时使用吗(服务器存储的密码不会冲突么)?
    谢谢!

    • 可以和朋友分享使用,但能和多少人分享,没有具体测试。。。 反正GAE的流量是每个月2G。推特的API请求上限是没小时150次,应该足够可以和很多人一起用。服务器不会储蓄密码,那个密码只是用来验证用的一个密钥。

      • 谢谢这么快就回复啦!
        那比如如果我Oauth验证后把current key改成了“helloworld”,那朋友是不是一定要沿用这个key?还是说他自己再修改一次key?若修改会不会影响我本人的使用?

        • 每个人通过API验证后,都是修改对应自己帐户的KEY。不需要把自己的KEY公开。只是用来给自己使用的客户端验证用的。。。 每个人的KEY都可以设置自己的。。。也不会互相影响。。。

  3. 很详尽的教程,已经按照着一步步成功搭建出来了。
    有一个疑问:这个API能与朋友分享吗?多人能同时使用吗(服务器存储的密码不会冲突么)?

  4. 我终于知道 涛哥的手机 是怎么来的了。表示一会我自己也去搭建一个。感谢你。

*
为了防止机器人评论,请输入验证码。 点击验证码图片可以收听验证码。
点击图片播放验证码文字。

 
除非外星人入侵等不可抗拒因素,这里的Feed将永远坚持全文输出,欢迎订阅。
战场原·黑仪