如今社交網絡異常活躍,接觸到的幾乎每個應用都使用有一個功能:分享。分享到各種SNS上,
現今以新浪微博最火,其提供了良好的API接口等文檔供開發者使用,正好稱此有機會也來接觸一下,
說不定那天也能用得上。下面簡單記錄下初步使用過程中遇到的問題,以便對后來者有點作用。
一授權認證
在使用新浪微博API前,還是很有必要先了解一下新浪微博授權認證過程如何。
可以參考博文:http://whatandroid.blog.51cto.com/2172732/818665
二 APP KEY的申請
為了使用新浪微博開放平台提供的API,你需要先注冊一個應用,獲得一個專屬的App Key和App Secret。
Key跟Secret的使用方式跟其他一些協議中的公鑰私鑰的方案相類似,你可以使用你所熟悉的編程語言將key和secret結合,
為你發出的每個請求添加簽名,以此來向新浪微博開放平台表明自己身份的合法性。
注冊方法:登錄新浪微博,點擊應用 找到:
然后就可以創建應用,填寫信息,不需要審核通過就可以得到App Key。
三下載SDK
http://open.weibo.com/wiki/SDK
到微博開放平台下載就可以了,我的是Android-SDK版本。weibo4android-1.2.1.zip。
里面已經提供了很多example,可以參考。直接導入到Eclipse里面也是可以使用的。
需要配置一下版本,將Weibo類中的
public class Weibo {
public static String CONSUMER_KEY = ""; //填入申請到的
public static String CONSUMER_SECRET = "";//填入申請到的
}
然后就可以測試運行。
四 API使用
其中提供了很多example,這樣我們就可以來熟悉微博API的使用。
在開發中我們可能需要將其集成到我們的APP中,這其中會有一些問題,下面看看我遇到的以及解決方法。在android4.0中:
1 E/AndroidRuntime(3595): java.lang.RuntimeException: Unable to start activity ComponentInf{com.weibo/com.weibo.ShareActivity}:android.os.NetworkOnMainThreadException.
NetworkOnMainThreadException:在主線程UI線程中訪問網絡 異常。訪問網絡是一件耗時的操作,可能被禁止這樣使用。
解決方法:開辟新的線程中訪問網絡。(最好是這樣)
或者使用android提供的類StrictMode自動進行優化。
具體使用方法在在程序入口如onCreate中加入:
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
StrictMode用意具體可參考:http://www.cnblogs.com/zelos/archive/2011/02/27/1966403.html
2 E/AndroidRuntime(6195): java.lang.NoClassDefFoundError: org.apache.commons.httpclient.methods.PostMethod
分享圖片的時候會遇上,找不到此類定義,可是明明已經導入相應的SDK中提供的包了。
將包都放入到lib文件下,在Eclipse中右鍵點擊lib文件夾,選Bulid path –> Use as source folder。
3 weibo.getOAuthRequestToken(callback_url);中callback_url問題
設置不正確可能在登錄之后無法返回到相應的Activity中;
這里的設置和AndroidManifest.xml中對activity的filter對應:
<data
android:host="ShareActivity"
android:scheme="share" />
然后requestToken =weibo.getOAuthRequestToken("share://ShareActivity"); 要對應。
才能返回到ShareActivity中;
scheme是工程名,必須得小寫。host是要返回的activity。
五發布微博例子
順便附上一個來自網絡上,能夠分享圖片的例子。我把它移到我這里工程上來的完整程序。
來自文章:http://www.pocketdigi.com/20110727/424.html
程序例子下載:
http://files.cnblogs.com/bastard/Share.rar