新浪微博API客戶端OAuth認證直接獲取pin

國內的推,新浪確實是很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方法,如果自動獲取失敗就走彈出網頁的方法。體驗穩定兩不誤。

插入結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章