免翻墙oauth验证的奶瓶推

2010年8月14日 | 分类: 关于推特 | 标签: , , ,

TWITTER官方在今年6月宣布将于8月16日起逐渐取消终止对Basic Authorization验证方式的支持,全面启用OAuth的认证方式。

8月16日–8月31日: 对Basic-oauth (不需要到Twitter官方网站认证) 的第三方和API的支持减为每小时10次

8月31日后:取消对Basic-oauth 的支持,只接受经过Twitter官方认证的OAUTH第三方和API。

随着日期的临近,鸭梨很大。我虽说有个用TWIP+OAUTH搭建的API,不过一般是用于桌面环境或着给除WM的设备上推的时候才用。(奈何WM这个残废,对VPN支持极差,那个自X门WM版又不顶用)

较之传统的Basic-OAuth验证。使用OAuth,Twitter应用无需知道用户的Twitter口令,只需要得到Twitter和用户双 方的授权信息(即Token)即可。这样,Twitter应用开发者就不知道用户的Twitter口令,仅能对授权信息(Token)做有限的操作,无法 修改用户的Twitter口令,也无法删除用户的Twitter账号。这在通信的安全性上有了很大保障。

Token 的取得需要访问Twitter官网,对于某些国家的普通民众来说,相比Basic Auth是一个不方便的地方。一定程度上也制约了一些人的上推积极性。

如果GFW管的不严,我倒不介意把API共享出来的,但是先前域名和IP已经被封过一次,所以还是不干这样的事吧,还是把搭建方法写出来。授人以鱼不,如授人以渔….

这次打算加上oauth验证的页面客户端是-“奶瓶推”。这个是我用来给我的残废WM机上推用的。之前虽说有软件客户端可以用,但是登录太慢,而且 所占内存也比较大。内置的API稳定性及安全性得不到保障。尽管能有办法通过特定软件修改内置API,但是对API的位数有限制,我买的这域名改起来太麻 烦了。WM又没办法在使用GPRS的情况下通过VPN直接连官网进行OAuth验证。所以我放弃了VPN和穿墙版Twitter软件。最后就我就把目光放 在“奶瓶推”。对于奶瓶推,如果不知道请在搜索引擎中找下。

奶瓶推的本身的安装是很简单的,网上有诸多教程。我今天打算写的就是如果让奶瓶推在不翻墙的情况下进行OAuth登录。

以下以奶瓶推最新的NetPutweets_2009_Final_SP2版(其实也不新了)为基础,配合glype 1.1的一些修改, OAuth登录过程无需翻墙。

  1. 首先要对奶瓶推进行修改

在安装文件夹中找到common 文件夹,选择user.php进行修改。找到function user_oauth() 代码如下:

01 // Generate AUTH token request
02 $params = array('oauth_callback' => BASE_URL.'oauth');
03 $response = twitter_process('https://twitter.com/oauth/request_token', $params);
04 parse_str($response, $token);
05 // Save secret token to session to validate the result that comes back from Twitter
06 $_SESSION['oauth_request_token_secret'] = $token['oauth_token_secret'];
07 // redirect user to authorisation URL
08 $authorise_url = 'https://twitter.com/oauth/authorize?oauth_token='.$token['oauth_token'];
09 if ( $_GET['proxy'] == true) {
10 $authorise_url = 'http://fanqiang.info/prs/browse.php?u='.$authorise_url;
11 }
12 header("Location: $authorise_url");

这段代码要实现的功能是,当奶瓶推获取oauth登录地址后,把登录地址交给glype在线代理处理(这里假设glype的安装目录为https://fanqiang.com/p/)。

还是这个文件,在function theme_login() 这段代码结束后加上对dabr登录界面修改后的代码,具体内容是加入了另一个使用代理进行OAuth的入口,以及加入即将移除旧的登录方式的提示。

01 function theme_login() {
02 return '
03
04 <a href="oauth?proxy=true"><img src="images/twitter_button_2_lo.gif" alt="Sign in with Twitter/OAuth" width="165" height="28" /></a> (via proxy; accessible in Mainland China).
05
06 Or:
07
08 <a href="oauth"><img src="images/twitter_button_2_lo.gif" alt="Sign in with Twitter/OAuth" width="165" height="28" /></a> (direct access; with this option, you should across the GFW first).
09
10 Or enter your Twitter username and password below:
11
12 <span style="background-color: #ffff00;"><strong>IMPORTANT: Basic authentication removal is going to occur in June 2010.</strong></span>
13 <form action="'.$_GET['q'].'" method="post">
14 Username <input name="username" size="15" />
15
16 Password <input name="password" size="15" type="password" />
17
18 <label><input name="stay-logged-in" type="checkbox" value="yes" /> Stay logged in? </label>
19
20 <input type="submit" value="Sign In" />
21 </form>
22 ';
23 }

至此,对于奶瓶推的修改就已经完成了,我的个人建议就是,再奶瓶推安装以后再进行修改,方便调试,瓦咔咔。 2. glype的设置: 接下来,我们所需要做的事情是,在OAuth界面输入完用户名和密码后,正常跳转回奶瓶推。glype的插件系统十分方便,假设dabr所在路径为 https://fanqiang.com/t/,我们首先在glype的plugins目录下创建名为fanqiang.php的文件并上传。代码如 下:

1 <?php
2 $redirect = $URL['href'];
3 header("Location: $redirect");
4 exit;

代码功能:当使用glype访问域名为hellogfw.com的内容时,自动跳转回hellogfw.com而不进行代理,如果需要细致一些的话,可以考虑加入对$URL[‘href’]的判断,仅当从验证界面返回时触发跳转。

为了避免发生一些奇怪的问题发生,还需要对glype进行进一步设置,访问admin.php(需另行上传,admin.php文件在glype安装包的extras目录中,上传至安装文件夹目录)进行如下设置:

URL Encoding Options

Use path info: Yes

Hotlinking

Prevent hotlinking: No (或者可以考虑设置成Yes但将fanqiang.com加入例外)

User Configurable Options

Encode URL: Default: on | Force: Yes

好了,所有的修改已经完成,免翻墙OAuth的奶瓶推就这样完成了。

____________________________________________________________________________________

PS:还有一个很重要的一点,为了避免glype网页代理被人用于翻墙浏览,有必要做安全设置。

将自己的站点域名与twitter.com 加入glype的whitelist 即白名单中去,这样的话,glype除了能代理浏览自身站点及twitter外,其他站点都会提示错误,可以有效保障奶瓶推及主机的安全。

此文要感谢@chocli,在搭建过程中,给我提供了许多帮助。现在这篇教程参考了他之前所写的使用Glype PHP在线代理帮助dabr实现Twitter OAuth登录》 一文

原文: http://www.notnaive.info/2010/08/13/oauthtwitter/

  1. sakai
    2010年8月17日09:41

    这真的是个噩耗,我想以后上推特的人应该会减少不少

    • iGFW
      2010年8月17日10:28

      应该不会,免翻墙oauth验证已经流行了!

  2. myip
    2010年8月14日19:24

    这个很有用,回去研究下!