在微網誌認證方式裡,基本的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帳号的重要性,也可以了解。另外騰訊微網誌最近提供了手機端的登入方式支援,有興趣的同學可以自行了解。