1. 程式人生 > >android基礎--XAuth方式授權與傳送

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 

        申請地址:

http://open.weibo.com/devel.php

        點選建立應用根據提示一步一步來 這裡筆者就不詳細說明了

 

下面是程式碼部分請認真閱讀

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