android基礎--XAuth方式授權與傳送
開發新浪微博 首先須要使用官方提供的API介面weibo4android.jar
官方下載地址:http://code.google.com/p/weibo4j/downloads/list
首先須要在專案中引入新浪微博官方的API jar包
如圖所示:
最近有朋友說他申請的KEY無法使用 原因是XAuth申請KEY是需求的 ,因為我的KEY是用公司提供的所以已經滿足XAuth的申請條件所以可以使用。請大家仔細看看下面官方提供的內容。
申請的條件:http://open.weibo.com/wiki/XAuth
xAuth申請需求
因為xAuth依然會獲得使用者明文密碼,xAuth實行有限開放。開發初期建議使用桌面客戶端使用OAuth,移動客戶端使用WAP 1.0或者2.0版頁面授權。當用戶數量達到一定規模後再使用xAuth提升使用者體驗。
xAuth申請條件:
應用分類屬於桌面客戶端、手機客戶端。
應用本身已經通過開放平臺文案、廣場稽核,並在廣場上展示超過15天。
應用使用人數在3000以上。
應用本身功能與新浪微博關聯緊密。
任何一個開發者都需要申請新浪微博的ConsumerKey 和 ConsumerSecret
申請地址:
點選建立應用根據提示一步一步來 這裡筆者就不詳細說明了
下面是程式碼部分請認真閱讀
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//consumerKey 與 consumerSecret 須要自己去官方申請 System.setProperty("weibo4j.oauth.consumerKey","XXXX"); System.setProperty("weibo4j.oauth.consumerSecret","XXXX"); Weibo weibo = new Weibo(); String userId = "XXXX"; //新浪微博的帳號 String passWord = "XXXX"; //新浪微博的密碼 try { weibo.getXAuthAccessToken(userId, passWord,"client_auth"); weibo.updateStatus("發表一條新浪微博");} catch (WeiboException e) { e.printStackTrace(); if(e.getStatusCode() == 400) { //內容重複,新浪微博不允許重複的內容釋出 如果內容重複會在這裡丟擲異常 }else if (e.getStatusCode() == 403) { //帳號密碼錯誤 } return; } |
帳號密碼授權只需要一次
大功告成 這樣就授權成功並且傳送了一條微薄 不過這樣還不是完美 因為如果每次都用同樣的帳號傳送微薄的話 沒有必要每次都授權 授權成功一次後 就可以把Token 與 TokenSecret 存下來 以後在傳送微薄只須要把Token 與 TokenSecret 讀出來就可以直接發。
儲存Token 與 TokenSecret
1 2 3 4 5 6 7 |
try { AccessToken accessToken = weibo.getXAuthAccessToke(userId,passWord,"client_auth"); String Token = accessToken.getToken(); String TokenSecret = accessToken.getTokenSecret(); //在這裡拿到了 Token 與 TokenSecret 可以把它存在Shared Preferences 中以後每次獨取出來就可以用 weibo.updateStatus("將Token 與 TokenSecret 存入 Shared Preferences "); } catch (WeiboException e) {} |
讀取Token 與 TokenSecret
讀取到之前授權的KEY
1 2 3 4 5 6 7 8 |
try { //Token與TokenSecret 可以在Shared Preferences 中取得之前存的內容 String Token = null; String TokenSecret = null; weibo.setOAuthAccessToken(Token, TokenSecret); //這樣就不用每次都通過帳號密碼獲取 AccessToken了weibo.updateStatus("在Shared Preferences 中取得Token與TokenSecret"); } catch (WeiboException e) {} |
微薄的異常類WeiboException
我們使用API介面 出現的異常WeiboException會幫我們捕獲下來比如
帳號密碼錯誤:e.getStatusCode() = 403
重複傳送微薄:e.getStatusCode() = 400
等等,程式碼實現的話我們可以在底層把這些異常throws 到上層,在上面去處理這些異常
下面這個連結是新浪官方提供的API錯誤程式碼 大家可以根據須要仔細閱讀
http://open.weibo.com/wiki/index.php/Help/error