oauth2 下应用的开发

新浪微博的应用层出不穷,风声水起啊,作为一个草根开发者的我今天来记录下如何开发最新开放的Oauth2的使用问题。希望高手莫喷,新手能学到一点东西。

如何申请一个站内应用

首先需要登录新浪微博开放平台(http://open.weibo.com/)注册一个账号或者用你已经有的账号登录进去。然后选择我的应用,在最右边你会看见创建应用。如下面所示:

你会看见:

当然是选择站内应用了,然后那些基本的信息填写就不再赘述了,最关键的就是下面信息的填写:

  • 1.站内应用地址的填写由在新浪微博展示的应用基本地址,7至20位小写字母或下划线(必须以字母开头,保存后不可修改),也就是你待会会碰到的回调的地址。
  • 2.实际的应用地址就是你的小应用到底放在哪个位置,这些信息填完了以后你就可以看到你创建的站内应用的App Key还有App Secret了。
  • 3.高度自适应还是不要打钩了,你可以看你应用的长度,一般为了方便你可以在开始测试的时候直接写到最大值2000。

程序开发的部分

首先讲下oauth和oauth2的不同之处吧,先参见下面的oauth以及oauth2验证的机制:


Oauth 验证机制


Oauth2 验证机制

显而易见的,oauth验证的步骤比oauth2验证的步骤要多的多,首先得生成一个验证的链接,然后带你到https 的那个验证的页面,最后你要输入验证你的新浪微博的用户名密码,最后返回到你开发的时候填好的callback的页面完成验证,然后你才可以获取登陆用户的信息已经使用那些微博的开放的api去更新用户的信息,发微薄,发私信等等。

但是Oauth2的验证步骤不是这样的,优化了一点,更精练了,有一个js完成了中间的过程,在demo的代码你可以看到这么一段其实就是这么一段代码在工作了,它会在你没有授权前弹出那个授权的小框框。效果也就是下面这样的:

点击授权后的页面如下就可以了:

不需要生成用户去点击的那个oauth里面的“使用新浪微博账号登陆”的按钮。而是替代的由js完成,加载出那个认证的框,然后输入新浪微博的用户名密码就可以了,免去了中间的一些步骤,加速了用户的验证。基本上就是站内版和普通版本的区别了吧,当然也可以生成像oauth那样的供用户点击的链接,具体的实现请参见打包的代码demo里面的login.php里面的程序,可以使用函数getAuthorizeURL来获取授权的地址,注意第二个参数是token而不是code,测试是可以滴。

拿到demo代码如何修改

相信拿到demo以后如果大家自己修改完发现确实能用了,再去完成自己的应用或者移植其他的到站内版都不是很困难了。

第一步需要修改的就是config.php了吧。

define( "WB_AKEY" , '3647045151' );
define( "WB_SKEY" , '409e627a6fea869bddcbec987b11e0b9' );
define( "CANVAS_PAGE" , "http://apps.weibo.com/deathdemo" );
WB_KEY 就是你的应用的KEY
WB_SKEY就是应用的密钥

特别注意,CANVAS_PAGE是应用展示的地址,而不是应用的实际地址,切记切记。要不然就出现了我开始的悲剧了==!点击授权后会出现死循环。貌似也没有第二步了,接下来的第二步就是把代码上传到你的空间了,如果你的应用是在SAE的话,你可以选择两种方式上传,个人推荐使用最新上线的SVN部署你的代码,很方便的哦。具体的实现可以参见SAE官网的介绍,贴出链接http://sae.sina.com.cn/?m=devcenter&content_id=138&catId=33

http://apps.weibo.com/deathdemo 这个就是我移植的那个站内版本的“死亡时间测试”了,最原始版本的地址是http://death.sinaapp.com ,大家也可以对比下就会很快发现oauth和oauth2的区别了。

其他的和oauth几乎没有区别,像获取微博的时间线,发送微博的updata,upload等等都是一样的。源码会打包给大家,版权不限,翻版不究。 其实oauth2完成的效果也就是这样的效果了。具体的实现大家还是小小的看一下demo的源码吧,源码打包放在下面。http://thfut-upload.stor.sinaapp.com/demo.zip 直接点击右键另存为就行了~~