天天看點

通過輸入方式在Android上進行微網誌OAuth登入

在微網誌認證方式裡,基本的oauth認證是必須要調整到跳轉到第三方頁面上進行授權的,例如下面的例子:

1、從http://open.weibo.com/wiki/index.php/sdk#android下載下傳sdk包。

    2、在androidexample/src/weibo4android/weibo.java中填入app key和app

secret。

    3、運作工程。

通過輸入方式在Android上進行微網誌OAuth登入

    4、點選gogo後跳轉到新浪微網誌的認證頁面。

通過輸入方式在Android上進行微網誌OAuth登入

    5、認證成功,可以根據accesstoken通路微網誌的接口。

通過輸入方式在Android上進行微網誌OAuth登入

在以上的過程中,手機端跳轉過程非常麻煩,需要打開浏覽器,一方面新浪顯示的頁面無法根據應用風格定制,另外有很大可能性由于浏覽器原因無法打開頁面,或者輸入失敗後就無法回到應用程式中。

想到在basicauth的方式下,我們是可以在自己的應用中輸入使用者名和密碼,這樣控制起來非常友善。那麼我們能否結合basicauth方式的簡單和oauth方式的安全性呢?

新浪微網誌提供了callback=json的方式來幫助我們繞過oauth的跳轉步驟,隻需要将使用者名和密碼傳遞給oauth/authorize接口,即可直接獲得verifiercode。相關說明如下:

通過輸入方式在Android上進行微網誌OAuth登入

    我們下面根據這種方式來修改上面的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按鈕。

通過輸入方式在Android上進行微網誌OAuth登入

    馬上能夠看到擷取到的access_token和access_token_secret。

通過輸入方式在Android上進行微網誌OAuth登入

我在去年7月開發的新浪微網誌傲遊插件也是采用這種方式實作的oauth認證,隻是全部采用javascript實作,在新浪微網誌認證方式從basic

auth切換到oauth的情況下不受任何影響。

騰訊微網誌沒有提供這種oauth方式的支援,我一直非常遺憾,考慮到qq帳号的重要性,也可以了解。另外騰訊微網誌最近提供了手機端的登入方式支援,有興趣的同學可以自行了解。