国内的推,新浪确实是很open的。对比腾讯的open.qq.com上关于微博这块,腾讯就是找喷,真是玷污了这么好的一个域open,我感觉叫close还差不多。

说到新浪在强烈推荐下新浪的开放平台SAE,确实很强大啊,在这个上面你搭个博客简直就是秒杀啊。memcache、mysql、队列。。。确实很赞,还有一点,按照所用来收费,用多少收多少,避免资源浪费。这种模式在国外可能会很火,毕竟还是个人、小型团体用的多一点,有实力的就自己搞运维了。但是在国内个人用户的备案是个很大的问题,还有就是内容监管,总之天朝总是特别点。

 但是sina的SAE和微博的开放平台大方向都是对的,开源的力量是巨大的。腾讯微博如果不是他的用户量,他也是网易和搜狐那样半死不活的状态。

 

 

废话不多说,来说下微博开放平台的OAuth用户认证。web版本就很简单了一个url的回调就获取到了需要的key,但是如果是客户端版本那么只能通过web然后用户输入密码获取到pin码,然后输入到客户端获取到access key,很是麻烦。

 

这里提供一种直接获取pin的方法,避免用户操作,用户所做的只有在客户端输入用户名密码其他的全部自动完成。

 思路:当获取到pin的url的时候,我们在代码中采取post的方式把用户的信息post到服务器,然后从返回的网页内容中匹配出pin码,然后自动获取accesskey

 

附代码:

改写的OAuthUpdate,原来的例子中是弹出浏览器然后获取,现在改为通过getPin方法来获取

 

public String getPin(String url, String token)

获取pin的方法,先通过readContentFromPost方法获取post(登录)动作之后服务器的返回页面,然后从页面中提取

 

 

public String readContentFromPost(String url, String token)

通过HttpURLConnection获取post后的返回页面(所有参数均写死,如需要应用,请自行独立出来)

 

这样一个自动获取OAuth的代码就OK了

获取到的key:

 

将上面这些方法分别放入sdk代码中,直接运行就会在你的微博里面发送一条微博信息。

获取到的accesskey是可以继续使用的,如下:直接将返回的accesskey设置成功后就可以发送微博信息,不需要再次OAuth认证

 

这种方法的缺点在于,太依赖与sina的页面,如果那天换了个图片的pin,就悲剧了。

所以可以考虑改造geiPin方法,如果自动获取失败就走弹出网页的方法。体验稳定两不误。

插入结果:

Logo

更多推荐