使用 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