教程:跟着船夫三步简单搭建推特twitter oauth api

此 教程主体上为三大步骤,对于以前搭建过的推友来说内容略显繁琐,但为了使更多推友,尤其是新手,能够顺利通过GAE上推,我觉得这种详细是必要的,所以我 夸张地称“此教程可能是目前最为详尽的API搭建教程”。虽然我认为教程已经够详细了,但推友还是会在搭建过程中出现各种各样的问题,推上不适合做详细解 答,如有疑问,首先请仔细研究教程!google是你最好的老师!也可留言,我会尽快解答。如需其他联系方式,请上推特索取,谢谢理解。

最新教程下载地址 http://www.rayfile.com/files/d7ad1a00-86d4-11e0-8589-0015c55db73d/

跟着船夫@boatman三步简单搭建推特twitter oauth api(教程结尾处有两枚API与推友分享)

2011.05.31 更新,支持android系统。经推友反馈,GAE的API可用于安卓手机。具体方法为:GAE的API一枚+修改hosts+seesmic客户端。 android手机端修改hosts后,翻墙打开API地址进行oauth验证,并修改API密码。然后用seesmic客户端(支持API)设置好 API地址就可以了。关于修改HOSTS和设置API请参照教程第三步3、4。修改hosts使API复活的方法IOS应该同样适用,只差实践证明,欢迎 苹果用户测试。

2011.05.25重要更新:解决基于GAE的API搭建成功后,打开api地址出现“AttributeError: can’t set attribute”报错的问题,建议搭建成功的朋友们更新。解决方法为更新GTAP到r74版本,本人博客提供gtap_r74的飞速网盘下载地址 http://www.rayfile.com/files/0c2fd73a-86d1-11e0-a709-0015c55db73d/ ,欢迎大家下载后给分享更多的网盘下载地址。具体更新办法参考教程第三步。另外,需要特别注意的是,在GTAP文件中app.yaml的version: 3必须和GAE程序的version一致。查看并设置GAE的version的方法为:登陆https://appengine.google.com/

打开所建程序,在main主目录下找到version,并设置为3(需和GTAP的version一致,教程提供的GTAP的version为3;如果你上传的GTAP的version为1,则GAE程序的version应设置为1;如果GTAP和GAE的version不一致,则仍会出现报错)

2011.04.13 更新:目前搭建成功后,打开api地址会出现报错页面,具体报错为“AttributeError: can’t set attribute”导致新搭建的api无法验证,也就导致了新搭建的api无法使用,所以请大家暂停搭建先,以后如果恢复正常我会及时更新博客。另外, 先前搭建的api仍可以正常使用,只不过进入api地址页面同样会报错,但不妨碍使用。

(2011/02/22更新)由于GFW的关系,在近期乃至今后相当长的时间内appspot可能将经常无法正常访问,这直接导致了GAE API无法使用,但修改hosts文件即可使用,所以大家不妨搭建一个,还是非常实用的。

PS:目前因为gfw的屏蔽,手机端暂无法使用GAE的api,但如果你的手机可以修改hosts,那么不妨尝试一下教程中修改hosts的方法是否可用。

==========我是分隔符=======以下为教程==========

第一步,注册GAE应用程序:

登陆或注册Google App Engine(简称GAE)账户。因为我们要通过GAE来搭建API,所以肯定要有账户了,如果你有Google账户,可以直接使用(没有的注册一个也很快的注册地址 https://appengine.google.com/ )。点击Create an Application按钮,输入唯一的应用程序注册名(6个或以上小写英文字母),标题随便写。

 

点击Create Application。完成后,如果第一次使用,谷歌会要求输入手机验证码,必须加上国家代码,中国大陆是+86,比如移动号码:+86136XXXX6666,然后把短信收到的验证码输入进去,提交,谷歌就会提醒你创建成了。第一步“注册GAE应用程序”成功。建议老用户也注册一个新的GAE程序,降低搭建API过程中的出错率。如果收不到短信,请点击try again重新发送尝试,或点FAQ向google反映,具体请搜索关键字“GAE 收不到短信 china mobile”。

第二步,注册Twitter程序,获取oauth需要的keysecret,需要先翻墙:

正文:打开https://twitter.com/oauth 登陆twitter

点击注册程序Register an application

如果网络信号不好,上传程序图片可能会导致无法注册,建议先不传图片。


 

程序名就是api显示的个性名称,必须是唯一的,介绍必须在十个字符以上,否则无法注册。

提要:1. 注意红圈中的事项

2.Callback URL 务必填写为http://XXXX.appspot.com/oauth/twitter/callback

“XXXX”为注册的GAE程序名,比如我注册的“followboatman

3.Default Access type 要设置成 Read & Write ,否则无法发推 (新版推特此项应设置为read, write, and private message access ,添加了对私信private message的认证,建议此前搭建的进行修改)


 

4.完成注册后得到 Consumer key 和 Consumer secret,建议不要关闭此网页,或保存一下这两个数据。

 

至此,我们的推特程序已经注册成功了,如果你想上传图片更换API个性名称,可以登陆https://twitter.com/oauth ,点开你注册的推特程序,然后点Edit application settings进行修改。

下面着手api认证。

第三步,进行api认证(所需软件及GTAP文件打包网盘下载由于网盘被封,不再提供打包下载

http://u.115.com/file/f82668225 (115网盘,请选择备份下载已被举报,大家可自行搜索相关软件下载)

1.安装相关软件及修改文件,完成api建设。上传需要安装两个软件,首先安装python.msi(请安装2.x版本),然后安装GoogleAppEngine.msi,一定要按顺序安装,建议默认安装路径,软件可以自己搜索下载,当然我提供网盘里面有(由于网盘被封,不再提供打包下载,请大家自行搜索pythonGoogleAppEngine)。

2.修改gtap文件(此文件需下载最新的r74版,不然会报错,建议直接下我提供的 http://www.rayfile.com/files/0c2fd73a-86d1-11e0-a709-0015c55db73d/ )。

解压完“GTAP”文件保存到任意位置(解压路径不要包含中文字符!打开gtap文件夹,修改app.yaml,选择打开方式为“写字板或记事本”,打开后修改第一行“application: 替换为申请的GAE用户名”相信这个不用多说了,比如我的修改为“application: followboatman”,其它地方我已改好,你们就不用改了。

修改main.py,选择打开方式为“写字板或记事本”,要改什么一目了然。把前面注册推特程序时获取的oauth需要的key和secret替换进去就OK了,注意填在那两撇里面。

CONSUMER_KEY = ‘替换为注册TWITTER应用程序得到的KEY即可’

CONSUMER_SECRET = ‘替换为注册TWITTER应用程序得到的SECRET即可’

3.上传

打开GoogleAppEngine软件,点File,然后点Add Existing Application,再点browse…,选择gtap文件夹,点击Add

添加成功后,鼠标点一下你搭建的这个应用程序,选择绿灯,RUN.跑过之后,选择Deploy,输入你的谷歌邮箱(当然是注册GAE的邮箱了)和密码点OK,等着吧,大概不到一分钟,对话框提示“Closing update: new version is ready to start serving.You can close this window now”,上传成功。(如果字符里面有error,说明你哪一步肯定错了,要核对一下,一般跟随船夫的脚步错不了,哈哈)

如果GAE软件出现错误,请尝试以下解决办法:1.删除GAE配置文件,在其所在盘一般为C盘,分别搜索google_appengine_projects.ini和google_appengine_launcher.ini并删除。2.重装Python 2.XX版本

至此,GAE oauth api 已经搭建成功。

API地址http://xxxx.appspot.com/

千万别忘了API地址最后的那个“/”,把xxxx换成你的GAE程序名,比如我这个教程建立的followboatman,也就是

http://followboatman.appspot.com/ 还有最后一步,认证。

【由于GAE经常被墙,为避免以后API无法使用,墙裂建议直接修改hosts。

修改hosts文件:

以Windows系统为例,打开C:\Windows\System32\drivers\etc ,找到hosts,以记事本的方式打开hosts文件,在最尾端添加以下IP字符和gae程序地址(一个程序名只可对应一个IP地址):

74.125.153.104 替换为你的GAE程序名.appspot.com

例如:

74.125.153.104 tweetforcn.appspot.com

203.208.39.104 twiforcn.appspot.com

203.208.39.104 followboatman.appspot.com

其中第一个ip地址对应的API地址为https的(加密),第二个和第三个是http的(普通),https和http是什么意思呢?其实就是加密传输与明文传输的区别。说的明白些,你如果将gae的api绑定到第一个ip上了,以我搭建的一个名为TweetForCN的API为例,那么它对应的地址应为:https://tweetforcn.appspot.com,无论是验证api还是在客户端使用api,都必须使用https://加密方式的。同理,如果绑定到了第二个ip,那么对应的就是http://非加密的。但不能一个API同时使用这两个IP地址。本教程搭建的api都支持https和http,可按需使用。

我建议大家使用加密方式(更新:目前修改为加密方式比普通方式不稳定)。以前我建议推友使用非加密的方式,是因为GAE的https加密传输被墙了,而http则未被墙,比较方便。虽然现在GAE也没完全被墙,但几乎快被方校长(你不知道方滨兴?)废了,所以既然无论怎样都要修改hosts了,那还不如绑定加密的IP地址,即使用https的方式使用API,这样的话,更有安全保障。当然,也可以使用普通传输,因为有的客户端不支持api加密传输的(比如twhirl)。(更新:目前修改为加密方式比普通方式不稳定,如无法使用加密方式请自行更换为普通方式)

如果不想使用教程中的IP地址,可自己ping google.com获得IP,当然这个IP是否支持加密传输就要自己测试了。如果你有IPV6环境,则也可以在hosts中添加Google的ipv6地址。

其他系统修改hosts文件方法请自行Google。【由于GAE经常被墙,为避免以后API无法使用,墙裂建议直接修改hosts。 【为了能正常访问船夫的博客,建议朋友们在hosts中添加如下字符】:

203.208.39.104 boat-man.appspot.com

 

4.步必须先翻墙才可完成认证。

翻墙先,然后浏览器中打开你的api地址 (建议验证时使用https加密方式)

https://followboatman.appspot.com/

出现以下界面就说明搭建成功了。

 

最后的话,仔细看:点sign in with twitter,登陆后点Allow,the new key里输入一个密码作为你使用这个API的密码,可以设置的与推特密码不同。

可能有些人不明白这一句话,简单的说,你在有些第三方软件比如TweetDeck中使用这个API,你就不用使用推特密码了,你的登陆方式为:推特账户+API密码+API地址,这样就能登陆了。但如果你设置的API密码和自己的推特密码一样,直接输入推特账户+推特密码+API地址就行了。PS:有些第三方软件API密码必须和推特密码一样才能使用。自己搭建的api,密码的设置设置为推特密码一样是最方便的,密码也只有自己知道,也很安全。使用别人提供的api时,建议大家使用TweetDeck,配合GAEapi效果不错,关键是密码可以不一样,安全性更高。

 

设置完新密码后还会返回到这个界面,不用管它,设置一遍即可,这个api密码是以最后设置的KEY为准的。比如最早是一长串字符,你改成了123456退出,那么123456就是API的密码,但下一次再进去认证的话,这个KEY又变成了长串字符,它是变动的,你只需改了它然后退出就可以用了。想改api密码的时候再进,不改就不要进啦。


API的搭建和认证工作已经完成,为了你能更快的熟悉API在第三方客户端的应用,下面我以tweetdeck为例,简单的说一下怎么使用这个api。

首先,下载安装Adobe AIR

http://get.adobe.com/cn/air/

然后下载安装TweetDeck的桌面客户端

http://www.tweetdeck.com/desktop/

(这两个软件网盘打包中有)

此步仍需翻墙才可成功设置!首先运行tweetdeck,添加twitter帐户和“twitter密码”,登录成功后,点击设置(图标为小扳手),再次添加推特账户,重新输入twitter账户和“设置的api密码”(如果你设置的api密码和推特密码不一样,一定要输入api密码才可使用此api),点开下面的Advanced Options,输入你搭建好的api地址,比如本教程中的:http://followboatman.appspot.com/

不要忘了最后的那个‘/’

然后点击Verify认证,不出意外的话,你应该已经刷出来推了,但字体可能不能正常显示,打开设置,colors/font 把字体改为international即可。如果还刷不出来就重新把这几个步骤来一遍。以后用tweetdeck不用翻墙就可以上推了,不信的话关闭翻墙软件,重新启动tweetdeck试试吧。API在其他客户端的应用和这个原理是一样的,具体别的软件怎么用自己慢慢琢磨吧,不知google之。

 

你若通过此教程成功上推,希望上推告知我,分享喜悦,有问题可以联系我。你若还搞不定,没关系,我提供两个API供推友们使用,但账户安全要自己负责哦,所以还是尽快搭起专用的更快速更安全的API吧!供推友们使用的oauth API(当无法正常访问时,同样需要修改hosts):

http://followboatman.appspot.com/ 名字叫“墙上的另一块砖”

http://twiforcn.appspot.com/ 名字叫“草泥马推特”

结语:善于探索,关注船夫。欢迎推上围观 @boatman http://twitter.com.boatman

欢迎转载到您的博客,请注明出处,长期更新 http://is.gd/jhY4 http://is.gd/i6sGe

  1. 老古
    2011年8月14日15:19

    今天偶然发现:不到https://twitter.com/oauth去认证,而到https://twitter.com/apps 去认证api,就可以更改api的权限了,解决了上面的问题。————不知道为什么,汗!

  2. 2011年7月20日00:27

    查到原因了,好像twitter公司不对appspot的域名授权了,不知道是不是这样

    • iGFW
      2011年7月20日07:07

      这样就无解了?

      • 老古
        2011年7月20日17:54

        请问你用的是什么api上推特的?

        • iGFW
          2011年7月20日21:25

          我没有用过api上推特,都是翻墙上官网网页。

  3. 2011年7月18日01:50

    弄好了之后提示这些东西:
    This application will be able to:
    Read Tweets from your timeline.
    See who you follow.

    This application will not be able to:
    Follow new people.
    Update your profile.
    Post Tweets for you.
    Access your direct messages.
    See your Twitter password.
    请教:是不是这个api过时了,还有这么多不能的

  4. AS
    2011年6月20日15:34

    Downloads – googleappengine – Google App Engine – Google Project Hosting
    https://code.google.com/p/googleappengine/downloads/list
    “google_appengine_1.5.1_prerelease.zip Google App Engine Python pre-release SDK 1.5.1 Prerelease 6 days ago 6 days ago 11.4 MB
    appengine-java-sdk-1.5.1_prerelease.zip Google App Engine Java pre-release SDK 1.5.1 Prerelease 6 days ago 6 days ago 38.2 MB ”

    (教程:跟着船夫三步简单搭建推特twitter oauth api )

  5. AS
    2011年6月16日22:06

    https://twip.bluemask.net/
    “Welcome to TwGate.
    https://twip.bluemask.net
    TwGate是一个Twitter API转发服务,本服务与客户端之间使用SSL通信。
    已注册用户请点此登录»
    或者注册»”
    https://code.google.com/p/twgate/
    “A t|w/i/t/t~er AP1 pr0xy, support multiple users, deploy with mod_wsgi.
    twgate是一个python编写使用bottle框架搭建的tw1tter ap1 pr0xy。 本项目样本服务运行于:https://twip.bluemask.net,欢迎使用/试用
    特点
    支持多用户,且每个用户可自定义发布source(需用户自己在tw1tter.com官方站创建)
    自带简单的阅读tvveets的界面
    自带fo/unfo,发布status、reply/retvveet等功能
    经测试支持seesm1c(1替换为i,创建帐号时勿开启xauth)
    下载
    直接在命令行下运行
    svn export https://twgate.googlecode.com/svn/trunk/ twgate
    (将最新代码下载至你的当前目录下的twgate目录内)
    部署要求
    无须额外的预设置,使用mod_wsgi部署,入口脚本为gate.wsgi
    需要sqlite3支持,某些vps可能需要单独手动安装sqlite3(以后会改进)
    强烈建议部署在SSL支持的主机
    计划
    添加除sqlite3之外的本地数据存取支持,以便可以运行在google app engine之上
    更完善的ap1接口支持
    目前的代码比较丑,基本陆续写下来没回头整理,controller分布的到处都是,有空再慢慢整理了,赫赫 欢迎任何建议,欢迎有兴趣的朋友加入!
    contact: small.fzgmail.com “

  6. AS
    2011年6月11日15:33

    1.Twitter in Egypt:
    http://asia.cnet.com/crave/speak-to-tweet-lets-egyptians-bypass-internet-to-tweet-62113866.htm
    https://twitter.com/speak2tweet?_escaped_fragment_=/speak2tweet#!/speak2tweet
    http://www.techspot.com/news/42221-china-starts-censoring-the-word-egypt.html

    2.Haben Sie schon die Software:TweetDeck,sobees,WindBird,mixero,twhirl,iFan… etc., mit AdvOR (option: ” Intercept “BETA” ” und “Bypass ISP filtring”) probiert ?

    “你好”

  7. 2011年6月10日01:13

    在安装tweetdeck时,提示错误

    • iGFW
      2011年6月10日08:26

      安装好Adobe AIR后才能用吧