新浪微博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

 

posted @ 2012-06-26 16:34  __Shadow  阅读(16194)  评论(0编辑  收藏  举报