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登录过程无需翻墙。
- 首先要对奶瓶推进行修改
在安装文件夹中找到common 文件夹,选择user.php进行修改。找到function user_oauth() 代码如下:
01 |
// Generate AUTH token request |
02 |
$params = array ( 'oauth_callback' => BASE_URL. 'oauth' ); |
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 |
09 |
if ( $_GET [ 'proxy' ] == true) { |
12 |
header( "Location: $authorise_url" ); |
这段代码要实现的功能是,当奶瓶推获取oauth登录地址后,把登录地址交给glype在线代理处理(这里假设glype的安装目录为https://fanqiang.com/p/)。
还是这个文件,在function theme_login() 这段代码结束后加上对dabr登录界面修改后的代码,具体内容是加入了另一个使用代理进行OAuth的入口,以及加入即将移除旧的登录方式的提示。
01 |
function theme_login() { |
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). |
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). |
10 |
Or enter your Twitter username and password below: |
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" /> |
16 |
Password <input name= "password" size= "15" type= "password" /> |
18 |
<label><input name= "stay-logged-in" type= "checkbox" value= "yes" /> Stay logged in? </label> |
20 |
<input type= "submit" value= "Sign In" /> |
至此,对于奶瓶推的修改就已经完成了,我的个人建议就是,再奶瓶推安装以后再进行修改,方便调试,瓦咔咔。 2. glype的设置: 接下来,我们所需要做的事情是,在OAuth界面输入完用户名和密码后,正常跳转回奶瓶推。glype的插件系统十分方便,假设dabr所在路径为 https://fanqiang.com/t/,我们首先在glype的plugins目录下创建名为fanqiang.php的文件并上传。代码如 下:
2 |
$redirect = $URL [ 'href' ]; |
3 |
header( "Location: $redirect" ); |
代码功能:当使用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/
这真的是个噩耗,我想以后上推特的人应该会减少不少
应该不会,免翻墙oauth验证已经流行了!
这个很有用,回去研究下!