【OSC手機App技術解析】- 集成新浪微博Android SDK

使用 OSChina.NET Android版客戶端的用戶,應該知道我們的客戶端只需要第一次登陸了新浪微博,以後都可以不用再登陸,直接一鍵分享,這樣很方便用戶。

由於新浪微博開放平臺預計2012年9月份停止舊版接口和OAuth1.0的使用,此次我們的Android客戶端v1.5.3已經更新並使用新版接口和OAuth2.0的SDK。

集成到App的效果圖:




下面將新浪微博Android SDK的集成分享給大家。

下載SDK
下載地址: http://open.weibo.com/wiki/SDK
我們找到Android SDK,點擊下載。


導入源碼包
將com.weibo.net包下面java文件導入項目的src目錄下,如下圖:



注意:這 裏我沒有導入ShareActivity.java文件以及ShareActivity類裏面所需的資源文件。因爲我們的App只需一鍵分享即可,不需要 用戶去編輯分享的內容。而ShareActivity類實際是個Activity類,涉及到佈局等,所以我們這裏沒有導入。
當然,你可以根據自己的需求,看是否需要導入。

導入相關資源
1、將dialog_bg.9.png圖片文件導入到res/drawable-hdpi目錄下;
2、將color.xml, dimens.xml, style.xml導入到res/values目錄下;

在寫導入圖片文件的時候,又讓我想起SDK中drawable-hdpi目錄下一張"刀塔(dota)"的圖片。


添加權限
我們需要在AndroidManifest.xml中添加以下權限:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>  
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS"></uses-permission>


在新浪微博SDK提供的例子裏面是需要以上5個權限的,其實我測試只要前面3個就OK了。

-----------------------以上熱身活動都完成後,開始進入主題了----------------------------
 

調用新浪微博的SDK,首先你要到新浪微博開放平臺申請的你的App的key,secret。同時,你還要進入“我的應用--應用詳情--應用信息--高級信息--授權設置--應用回調頁”設置你的回調頁地址。


以下假設你已經有了CONSUMER_KEY, CONSUMER_SECRET, REDIRECT_URL。

首次授權登錄
1、初始化weibo

private static final String CONSUMER_KEY = "your app_key";
private static final String CONSUMER_SECRET = "your app_secret";
private static final String REDIRECT_URL = "your redirect_url";
//REDIRECT_URL 必須與你填寫在微博開放平臺上的一致
Weibo weibo = Weibo.getInstance();
weibo.setupConsumerConfig(CONSUMER_KEY, CONSUMER_SECRET);
weibo.setRedirectUrl(REDIRECT_URL);


2、彈出對話框,並授權登錄

weibo.authorize(cont, new WeiboDialogListener() {
    @Override
    public void onComplete(Bundle values) {
        try
        {
            String token = values.getString(Weibo.TOKEN);
            String expires_in = values.getString(Weibo.EXPIRES);
            accessToken = new AccessToken(token, CONSUMER_SECRET);
            accessToken.setExpiresIn(expires_in);   
            //此處保存AccessToken
            //your save function
            //微博分享
            weibo.shareToweibo(cont, accessToken.getToken(), accessToken.getSecret(), shareMessage);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
    @Override
    public void onError(DialogError e) {
        Toast.makeText(context,"授權失敗 : " + e.getMessage(), Toast.LENGTH_LONG).show();
    }
    @Override
    public void onCancel() {
        //Toast.makeText(context, "取消授權", Toast.LENGTH_LONG).show();
    }
    @Override
    public void onWeiboException(WeiboException e) {
        Toast.makeText(context,"授權異常 : " + e.getMessage(), Toast.LENGTH_LONG).show();
    }
});  


這裏說明下,登錄成功後會調用onComplete()方法,在方法裏你需要保存AccessToken,同時分享微博。

注意:weibo.shareToweibo()方法是我自己定義的,方便下次直接根據保存的AccessToken分享微博。

這裏我把自己寫的shareToweibo()方法代碼貼出:

/**
 * 分享到微博
 * @author  liux
 */
public boolean shareToweibo(Activity activity, String accessToken, String tokenSecret, String content) throws WeiboException {
    Utility.setAuthorization(new Oauth2AccessTokenHeader());
    WeiboParameters bundle = new WeiboParameters();
    bundle.add("source", APP_KEY);
    bundle.add("status", content);
    String url = SERVER + "statuses/update.json";
    if(mAccessToken == null){
        mAccessToken = new AccessToken(accessToken, tokenSecret);
    }
    request(activity, url, bundle, Utility.HTTPMETHOD_POST, mAccessToken);
    return true;
}


實際調用上面方法的時候,需要try-catch一下,只要沒有獲取到WeiboException異常,就是分享成功了。

 

一鍵分享
下面說明一下,以後使用一鍵分享時,不需要再登錄,只需要:
1、初始化weibo(同上)
2、獲取保存的AccessToken
3、調用shareToweibo()方法

OK,就這麼簡單。
 

如果大家有什麼疑問的話,歡迎在下面回帖一起探討。

PS:

OSC Android客戶端下載地址: http://www.oschina.net/uploads/osc.apk
OSC iPhone客戶端下載地址:
http://www.oschina.net/uploads/osc.ipa
OSC Windows Phone客戶端下載地址: http://www.oschina.net/uploads/osc.xap

 

轉載:http://www.oschina.net/question/157182_59192

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