在GAE上搭支持OAuth的API
前言
各位好久不见(抱拳作揖),上次的那篇日志多谢各位英雄捧场(鞠躬)。这次希望大家继续支持,不要吝啬各种鲜花西红柿,统统向我扔过来吧~
……………………我……是……分……隔……线……………………
前几天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源代码下载页:
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”
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这个文件
‘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…:
你可以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:
在方框框里输入你的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://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/