• 【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中添加以下权限: 

    1 <uses-permission android:name="android.permission.INTERNET"></uses-permission
    2 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    3 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    4 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
    5 <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 

    1 private static final String CONSUMER_KEY = "your app_key";
    2 private static final String CONSUMER_SECRET = "your app_secret";
    3 private static final String REDIRECT_URL = "your redirect_url";
    4 //REDIRECT_URL 必须与你填写在微博开放平台上的一致
    5 Weibo weibo = Weibo.getInstance();
    6 weibo.setupConsumerConfig(CONSUMER_KEY, CONSUMER_SECRET);
    7 weibo.setRedirectUrl(REDIRECT_URL);


    2、弹出对话框,并授权登录 

    01 weibo.authorize(cont, new WeiboDialogListener() {
    02     @Override
    03     public void onComplete(Bundle values) {
    04         try
    05         {
    06             String token = values.getString(Weibo.TOKEN);
    07             String expires_in = values.getString(Weibo.EXPIRES);
    08             accessToken = new AccessToken(token, CONSUMER_SECRET);
    09             accessToken.setExpiresIn(expires_in);  
    10             //此处保存AccessToken
    11             //your save function
    12             //微博分享
    13             weibo.shareToweibo(cont, accessToken.getToken(), accessToken.getSecret(), shareMessage);
    14         }
    15         catch (Exception e)
    16         {
    17             e.printStackTrace();
    18         }
    19     }
    20     @Override
    21     public void onError(DialogError e) {
    22         Toast.makeText(context,"授权失败 : " + e.getMessage(), Toast.LENGTH_LONG).show();
    23     }
    24     @Override
    25     public void onCancel() {
    26         //Toast.makeText(context, "取消授权", Toast.LENGTH_LONG).show();
    27     }
    28     @Override
    29     public void onWeiboException(WeiboException e) {
    30         Toast.makeText(context,"授权异常 : " + e.getMessage(), Toast.LENGTH_LONG).show();
    31     }
    32 });

    这里说明下,登录成功后会调用onComplete()方法,在方法里你需要保存AccessToken,同时分享微博。 

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

    这里我把自己写的shareToweibo()方法代码贴出: 

    01 /**
    02  * 分享到微博
    03  * @author  liux
    04  */
    05 public boolean shareToweibo(Activity activity, String accessToken, String tokenSecret, String content) throws WeiboException {
    06     Utility.setAuthorization(new Oauth2AccessTokenHeader());
    07     WeiboParameters bundle = new WeiboParameters();
    08     bundle.add("source", APP_KEY);
    09     bundle.add("status", content);
    10     String url = SERVER + "statuses/update.json";
    11     if(mAccessToken == null){
    12         mAccessToken = new AccessToken(accessToken, tokenSecret);
    13     }
    14     request(activity, url, bundle, Utility.HTTPMETHOD_POST, mAccessToken);
    15     return true;
    16 }

    实际调用上面方法的时候,需要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

  • 相关阅读:
    css
    js -【 数组】判断一个变量是数组类型的几种方法
    【消灭代办】第2周
    【本周面试题】第2周
    【本周面试题】第1周
    【消灭代办】第1周
    echarts
    css
    js
    JS方法
  • 原文地址:https://www.cnblogs.com/firecode/p/2682323.html
Copyright © 2020-2023  润新知