新浪微博API使用
如今社交网络异常活跃,接触到的几乎每个应用都使用有一个功能:分享。分享到各种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
程序例子下载:
https://files.cnblogs.com/bastard/Share.rar