在微博认证方式里,基本的OAuth认证是必须要调整到跳转到第三方页面上进行授权的,例如下面的例子:

1、从http://open.weibo.com/wiki/index.php/SDK#Android下载SDK包。

2、在AndroidExample/src/weibo4android/Weibo.java中填入App key和App Secret。

3、运行工程。


4、点击GoGo后跳转到新浪微博的认证页面。


5、认证成功,可以根据AccessToken访问微博的接口。


在以上的过程中,手机端跳转过程非常麻烦,需要打开浏览器,一方面新浪显示的页面无法根据应用风格定制,另外有很大可能性由于浏览器原因无法打开页面,或者输入失败后就无法回到应用程序中。

想到在BasicAuth的方式下,我们是可以在自己的应用中输入用户名和密码,这样控制起来非常方便。那么我们能否结合BasicAuth方式的简单和OAuth方式的安全性呢?

新浪微博提供了callback=json的方式来帮助我们绕过OAuth的跳转步骤,只需要将用户名和密码传递给oauth/authorize接口,即可直接获得verifiercode。相关说明如下:


我们下面根据这种方式来修改上面的SDK以支持用户名和密码输入方式。

打开res/main.xml文件,注释掉Button01,添加两个输入框、一个按钮和TextView。


然后在src下的weibo4android.http包里添加OAuthVerifier.java类,这个类是实体类,代表OAuth的VerifierCode对象,代码如下:


然后修改androidexamples包下的AndroidExample类。初始化界面元素,设置authButton点击时的事件处理。


在src下weibo4android包的Weibo.java里添加getOAuthVerifier方法。


在src下weibo4android.http包的HttpClient.java文件里添加如下代码:


保存并运行工程。

在弹出的界面上输入新浪微博帐号和密码,并点击auth按钮。


马上能够看到获取到的access_token和access_token_secret。


我在去年7月开发的新浪微博傲游插件也是采用这种方式实现的OAuth认证,只是全部采用Javascript实现,在新浪微博认证方式从Basic Auth切换到OAuth的情况下不受任何影响。

腾讯微博没有提供这种OAuth方式的支持,我一直非常遗憾,考虑到QQ帐号的重要性,也可以理解。另外腾讯微博最近提供了手机端的登录方式支持,有兴趣的同学可以自行了解。

更多相关文章

  1. android--由文件名获取文件Id的两种方法
  2. Android(安卓)中倒计时验证两种常用方式实例详解
  3. Android请求服务器的两种方式--post, get的区别
  4. android-HttpClient和HttpURLConnection判断网络连接
  5. Android应用中动态更改主题的实现
  6. android客户端使用ssl连接mqtt服务器(单向认证)
  7. android 应用的网络请求工具
  8. 如何更改Android(安卓)程序的icon快捷方式图标?
  9. Android(安卓)SDK Manager 无法更新解决办法

随机推荐

  1. sqlserver禁止management studio的自动提
  2. SQL Server 向临时表插入数据示例
  3. MS SQL Server游标(CURSOR)的学习使用
  4. 删除sqlserver数据库日志和没有日志的数
  5. SQL高级应用之同服务器上复制表到另一数
  6. 根据sql脚本修改数据库表结构的几种解决
  7. MSSQL自动重建出现碎片的索引的方法分享
  8. 将string数组转化为sql的in条件用sql查询
  9. SQL Server 定时访问url激活数据同步示例
  10. SQL Server2008数据库导入导出兼容性处理