在GAE上搭支持OAuth的API

2010年7月25日 | 分类: 关于推特 | 标签: , , ,

前言

各位好久不见(抱拳作揖),上次的那篇日志多谢各位英雄捧场(鞠躬)。这次希望大家继续支持,不要吝啬各种鲜花西红柿,统统向我扔过来吧~

……………………我……是……分……隔……线……………………

前几天twitter API出问题了,很多不明真相的群众表示不能发推情绪很不稳定。不过……我能发推能看推,所以毫无压力……为什么我贱建的API能用?我什么都不知道,可能是我人品比较好吧(仰头),还是因为我比较帅(挺)?

好了,不扯淡了,这次教大家在GAE上搭支持OAuth的API。

如果你不知道api干吗用别问我,我也不知道他是啥,我只知道他用在某些地方能做啥。

在GAE上搭支持OAuth的API

前期准备:

1、Google账号一个,推账号一个。

2、下载gtap源代码,下载地址:

http://gtap.googlecode.com/files/gtap-oauth-rev6-2.7z

(不一定是最新的,不过我用的就是这个)

附gtap源代码下载页:

http://code.google.com/p/gtap/downloads/list?can=1&q=&colspec=Filename+Summary+Uploaded+Size+DownloadCount

3、下载Google App Engine SDK,可以将修改好的源代码上传到GAE。

http://code.google.com/intl/zh-CN/appengine/downloads.html

4、捐钱给作者。

注册一个 GAE 帐户:

(碎碎念:烦死了,怎么注册GAE都要写进去)

怎么注册Google账号我就不写了啊,你懂的,不懂回火星去。
打开https://appengine.google.com/(打不开就用http试试),用你的Google账号登陆,点击“创建一个应用”


输入你的手机号码(加国家码的手机号码,例如“+8613712345678”),Google会发送验证码到你手机(另:Google voice的号码也能用,于是我上篇教程写了是有用的~附链接)

注意:如果某个手机号码你之前注册过GAE,那么输入这个手机号码是没法继续的,会提示:

“The phone number has been sent too many messages or has already been used to confirm an account”


然后输入手机收到的验证码(= =抱歉俺忘了截图,不过这个不是什么大问题吧我说……)

叉烧包同学友情路过:“不要pia我”
输入你喜欢的Identifier和Title(两个都仅限英文)

注意:不是随便什么Identifier都可以用的,有的被注册了你就杯具了(是的,我杯具了):

你可以点Check Availability看看输入的Identifier可不可用:

而且Title只能是“Application Title must be between 4 and 30 characters. Letters, digits, quotes, hyphen, period, and exclamation point are acceptable characters”,瞧,中文不行的哦(是的我又杯具了)。
不容易啊,终于注册成功了:

行了,这个网页的任务完成了,关了页面吧。

申请推的applications

打开推主页(弱弱地问,翻功夫网大家都会的吧?),点击右上角的Setting,点Connections,点击右侧的那个“here”


点击注册一个新的application:

app名随便填,中英皆可;说明随便填,中英皆可;app网址随便填,是网址就行,就算是无法访问的也可以。

组织名随便填,中英皆可;组织网址随便填,要求同app网址。

红色方框内的按照图示选择。
App名、说明、组织名、两个网址,各部分用途如下:

够直观了吧~
注:Application name是唯一的(可用中文),比如你没法用“奶瓶腿”这个名字作为API名


很重要、不要填错的Callback URL
填写:

https://xxx.appspot.com/oauth/twitter/callback

xxx就是你刚注册GAE时填的Application Identifier,自己替换掉啊,别复制粘贴xxx就拿去用……

注:这个URL用http和https都可以的,那当然是用https啦!

另:有人说这个可以自定义的,不过这个我不会搞。

另:Use Twitter for login那个勾勾随便的,爱勾就勾上
点击save,建好了:

红框框里面的东西是重要的东西,这个页面先别关,后面有用的。

修改源代码:

注意:改源代码用记事本即可,不必下载Python的。打开记事本,把下面提到的两个文件拖到记事本上即可,随意修改,改完保存、关闭,即可。


1、修改oauth_config.py

前期准备的那个gtap源代码下了没?解压缩,打开文件夹,用记事本打开oauth_config.py这个文件


把刚才申请好的app信息填进英文单引号‘’里面,例如:

‘consumer_key’: ‘abc’,

‘consumer_secret’: ‘abc’,
限制可使用api的用户:

在‘allowed_users’: [],的方括号内添加允许访问的用户twitter ID,格式为[’xxx’,](英文单引号和逗号)。方括号为空,则表示阿猫阿狗都能用你建的这个api。

建议限制吧,否则别人只要猜到你的Application Identifier就能用你的api了。

2、修改app.yaml

用记事本打开app.yaml文件,

把第一行的“<your appid>”改成你在GAE申请时填的Application Identifier:

注意,不要留下“<>”,如图:


别关掉。接着,不翻墙,先打开https://code.google.com/看看,能刷出网页的话呢就没事了,刷不出来的话,把app.yaml里的“secure: always”都删掉(一共四句话)。

别管为什么,听话就是了。

………………

哎,还是解释下吧,简单地说那句话就是强制加密传输数据,但是某国大部分地区https的GAE被墙了,所以没法加密传,就得去掉那几句话。

都改完了,保存。

安装下载来的Google App Engine SDK

(谜之音:这图标是……飞机吧?)
打开,选择file的Add Existing application…:


点击Browse…选择源代码所在的文件夹,然后点击确定:


你可以run一下看看有没有错误(好吧这样做比较蛋疼),然后点Deploy上传。


输入Google邮箱和密码,点OK就行了,这个就不截图了。
接着等上传……(可能有点慢)
等到窗口提示“You can close this window now.”,才说明大功告成。

别急,还要OAuth登陆修改key。

Oauth登录API并修改key(需翻墙):

登录http://xxx.appspot.com/oauth/twitter/login(一样的,xxx替换成刚注册GAE时填的Application Identifier),然后当然是点Allow:


Allow之后会转到这样的一个界面:

在方框框里输入你的twitter密码,点击提交查询。

(如果是API for Mixero的话,必须填twitter密码,为啥?我不知道┐(-_-)┌)

(当然如果你不用mixero的话这个key可以随便填的,不过登陆的时候用key还是用twitter密码我就不知道了,我可没这么蛋疼还去试这个玩意儿。据说登陆的时候用key而不是twitter密码)

注意:听说这个key在后台数据库能看得到,所以不要用不认识、不可信任的人提供的API!不过如果是自己搭的API的话,填密码也没关系嘛~
然后呢然后呢然后呢?

然后这个API就能用了~

测试一下:

在支持API设置的软件中,把API设为http://xxx.appspot.com/gtap_oauth/(记得替换xxx啊,换成啥你懂的)

去试试看吧~
在mixero设置完毕,直接发推:

注意“来自 …”的效果

Twitter主页效果:

大功告成,可喜可贺

参考文献:

谢谢http://timewilltell.me/2010/05/gaes-api-methods-built-oauth.html

谢谢http://4zai.net/179

http://4zai.net/137

谢谢http://code.google.com/p/gtap/issues/detail?id=9

谢谢@yumimao友情校对、润色

另:提供一个所谓的一键秒贱建API网络服务:

http://apigee.com/,只需注册一下,无需上传文件,无需任何设置,只填写twitter.com就行,秒搭api。(by匿名人士)

话说……这不是抢我饭碗么(╯-_-)╯ ╧╧
GAE虽然免费但是不太稳定,你看今天就嗝屁了……所以有条件的话在域外空间也搭一个API比较好。突然想到,如果有一天GAE也被X了……那我这几天写的这篇教程就搞毛了……

自建API最重要的就是可以自定义API名字,什么时候想改了,去推主页改掉自己建的那个app 名字即可。

拓展练习:

1、 在GAE上搭一个twitalker

Twitalker主页:http://code.google.com/p/twitalker/

源代码下载:http://code.google.com/p/twitalker/downloads/list

教程:http://code.google.com/p/twitalker/wiki/SetupGuide

2、 在其他空间用gtap建一个API

3、 在其他空间用twip建一个API

4、 给作者钱

原文:http://www.laonb.com/archives/8447/

目前还没有任何评论.