/**稀土掘金,时光不老**/

大家好,O(∩_∩)O哈哈~

在这里和大家分享一下微博分享的经验吧,相信很多app都有的功能,也相信大家肯定也做过吧,现在要说哪个app没有分享功能也太low了吧O(∩_∩)O哈哈~在项目中添加了微信好友,微信朋友圈,qq等分享没有问题,到了微博分享出了问题,除了分享也是当作自己的笔记吧。

大家知道,分享都是分享到第三方平台,那就好,直接进入人家的官方平台,看人家的api文档,下载人家的开发sdk,一句话,都是用别人的,只要你会复制。

这里给出的微博分享的文档下载链接 https://github.com/sinaweibosdk/weibo_android_sdk

当然我这里也会简单解释一下下步骤:

1.申请应用程序的app_key

用户首先需要在微博开放平台上对应用进行注册,并获取APP_KEY,添加应用的授权回调页(Redirect URI)。详情请仔细阅读:移动客户端接入(http://t.cn/aex4JF )

2.注册应用程序的包名和签名

3.下载微博分享的sdk .

具体详细的地方就不进行一一说了,自行看api文档,说的可清楚了。

好了,接下来,贴出我的代码吧。

在进行第三方微博分享之前

// 创建微博分享接口实例
mWeiboShareAPI = WeiboShareSDK.createWeiboAPI(ct,APP_KEY); //APP_KEY 这里是你再微博应用平台申请的

// 注册第三方应用到微博客户端中,注册成功后该应用将显示在微博的应用列表中。
// 但该附件栏集成分享权限需要合作申请,详情请查看 Demo 提示
// NOTE:请务必提前注册,即界面初始化的时候或是应用程序初始化时,进行注册
mWeiboShareAPI.registerApp();

然后根据api文档进行操作,很简单。

/**
 * 第三方应用发送请求消息到微博,唤起微博分享界面。
 * 注意:当 {@link IWeiboShareAPI#getWeiboAppSupportAPI()} >= 10351 时,支持同时分享多条消息,
 * 同时可以分享文本、图片以及其它媒体资源(网页、音乐、视频、声音中的一种)。
 */
private void sendMultiMessage() {// 1. 初始化微博的分享消息
    WeiboMultiMessage weiboMessage = new WeiboMultiMessage();
    //    if (hasText) {
    weiboMessage.textObject = getTextObj();
    //    }
    //
    //    if (hasImage) {
    weiboMessage.imageObject = getImageObj();
    //    }

    // 用户可以分享其它媒体资源(网页、音乐、视频、声音中的一种)
    //    if (hasWebpage) {
    //    weiboMessage.mediaObject = getWebpageObj();
    //    }

    // 2. 初始化从第三方到微博的消息请求
    SendMultiMessageToWeiboRequest request = new SendMultiMessageToWeiboRequest();
    // 用transaction唯一标识一个请求
    request.transaction = String.valueOf(System.currentTimeMillis());
    request.multiMessage = weiboMessage;

    // 3. 发送请求消息到微博,唤起微博分享界面 
    //URL:
/**
 * 当前 DEMO 应用的回调页,第三方应用可以使用自己的回调页。
 * <p>
 * <p>
 * 注:关于授权回调页对移动客户端应用来说对用户是不可见的,所以定义为何种形式都将不影响,
 * 但是没有定义将无法使用 SDK 认证登录。
 * 建议使用默认回调页:https://api.weibo.com/oauth2/default.html
 * </p>
 */
    AuthInfo authInfo = new AuthInfo(ct, APP_KEY, URL,SCOPE);     Oauth2AccessToken accessToken = AccessTokenKeeper.readAccessToken(ct);    String token = "";    if (accessToken != null) {        token = accessToken.getToken();    }    mWeiboShareAPI.sendRequest((Activity) ct, request, authInfo, token, new WeiboAuthListener() {        @Override        public void onWeiboException(WeiboException arg0) {        }        @Override        public void onComplete(Bundle bundle) {            Oauth2AccessToken newToken = Oauth2AccessToken.parseAccessToken(bundle);            if (newToken.isSessionValid()) {                AccessTokenKeeper.writeAccessToken(ct, newToken);                ToastUtil.showToast(ct,"分享成功");            } else{                // 当您注册的应用程序签名不正确时,就会收到错误Code,请确保签名正确                String code = bundle.getString("code", "");                ToastUtil.showToast(ct,code);            }        }        @Override        public void onCancel() {        }    });}
//SCOPE:
/**
 * Scope OAuth2.0 授权机制中 authorize 接口的一个参数。通过 Scope,平台将开放更多的微博
 * 核心功能给开发者,同时也加强用户隐私保护,提升了用户体验,用户在新 OAuth2.0 授权页中有权利
 * 选择赋予应用的功能。
 * <p/>
 * 我们通过新浪微博开放平台-->管理中心-->我的应用-->接口管理处,能看到我们目前已有哪些接口的
 * 使用权限,高级权限需要进行申请。
 * <p/>
 * 目前 Scope 支持传入多个 Scope 权限,用逗号分隔。
 * <p/>
 * 有关哪些 OpenAPI 需要权限申请,请查看:http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI
 * 关于 Scope 概念及注意事项,请查看:http://open.weibo.com/wiki/Scope
 */
/**
 * 创建文本消息对象。
 *
 * @return 文本消息对象。
 */
private TextObject getTextObj() {TextObject textObject = new TextObject();
    String weiboContent = url + " " + contentString;
    if (weiboContent.length() > Constants.WEIBO_CONTENT_MAX_LENGTH) {weiboContent = weiboContent.substring(0, Constants.WEIBO_CONTENT_MAX_LENGTH);
    }textObject.text = weiboContent;
    return textObject;
}/**
 * 创建图片消息对象。
 *
 * @return 图片消息对象。
 */
private ImageObject getImageObj() {ImageObject imageObject = new ImageObject();
    //        设置缩略图。 注意:最终压缩过的缩略图大小不得超过 32kb。
    Bitmap bitmap = getUserPic();
    imageObject.setImageObject(bitmap);
    return imageObject;
}
public Bitmap getUserPic() {ImageLoader imageLoader = ImageLoader.getInstance();
    String fileName = null; //使用Universal ImageLoader后的缓存目录
    if (!TextUtils.isEmpty(picUrl)) {if (Constants.DEBUG) {Logger.w("picurl***" + picUrl);
        }fileName = imageLoader.getDiscCache().get(picUrl).getPath();
        if (TextUtils.isEmpty(fileName)) {//图片缓存不存在,尝试根据picurl是图片本地路径去查找
            File file = new File(picUrl);
            if (null != file && file.exists()) {fileName = picUrl;
            }}}if (!TextUtils.isEmpty(fileName)) {File file = new File(fileName);
        if (null != file && file.exists()) {Bitmap mbitmap = BitmapFactory.decodeFile(fileName);
            if (Constants.DEBUG) {Logger.w("mbitmap***" + mbitmap);
            }return mbitmap;
        } else {Bitmap mbitmap = ImageSDCardCacheUtil.getInstance().getBitmap(ct, picUrl);
            if (Constants.DEBUG) {Logger.w("sdCard***" + mbitmap);
            }return mbitmap;
        }} else {//放logo
        Bitmap mlogo1 = BitmapFactory.decodeResource(ct.getResources(), R.mipmap.logo);
        return mlogo1;
    }
}

根据文档来,基本上代码就这些吧。

开始分享吧。

问题来了,。。。。当我微博分享时,什么反应都没有,连微博界面都唤醒不了。

没办法,查资料,看文档。

后来和申请第三方平台分享的童鞋才知道,他们申请微博分享时,只有一个APP_KEY 其他的啥都没有,我晕,没办法,跟他们解释,除了申请Key ,还要提交的应用签名,(如何生成应用签名,如何提交应用签名,文档和官方平台都有详细的解释和指导),只有一个key是分享不了的。

等申请分享的童鞋把签名提交上去后,果然分享成功了。

接下来分享到微博Web时,又出现了21322错误码,查看文档才知道,直接看图

必须在本地客户端和微博平台填写的回调地址是一样的。就是这个

 AuthInfo authInfo = new AuthInfo(ct, APP_KEY, URL,SCOPE); 
public static final String URL = "https://api.weibo.com/oauth2/default.html";

好吧,改,再进行分享,分享web又出现了问题请看

使用网页登陆后就出现{"error":"userinfo error","pos":"5"} 这个错误信息

老规矩,看文档,查资料::

有发现:

若是没有安装微博客户端,则使用网页登陆授权,进行分享。最近之前自己集成的分享功能不能正常分享了,使用网页登陆后就出现{"error":"userinfo error","pos":"5"} 这个错误信息

在进行新浪微博分享的时候,最早在新浪微博开放中平台创建应用后,当是手机上没有安装新浪微博客户端时,进行分享时,如果没有添加测试账号的前提下在网页模式下分享内容到微博。就会出现这样的错误。

现在的这个问题是1.应用未通过新浪的审核 2. 应用没有添加相应的测试账号

若是应用过审了,则任意微博账号都可以无阻的进行分享,但处于开发阶段,这个过审就是不可及的,所以就是添加测试账号。如何添加测试账号呢,别急,

在微博官方平台我的应用->应用右边:应用详情->左边:应用信息->高级信息->最下边:测试用户

最后的最后,当所有问题都解决了,代码一句没改,真的没改,微博客户端,web分享成功了哈,O(∩_∩)O哈哈~

来一句 弘洋大神 的名言

生命不息,奋斗不止,万事起于忽微,量变引起质变

新浪微博分享遇到的心酸的问题相关推荐

  1. js实现QQ、微信、新浪微博分享功能

    使用js实现QQ.微信.新浪微博分享功能. 微信分享需要手机扫描二维码,需要对url进行编码.在https协议下,扫描二维码时,浏览器打不开可能是没有安全证书导致的. js代码: 1 var shar ...

  2. javaScript实现选中文字提示新浪微博分享的效果

    <!DOCTYPE html> <html xmlns:wb="http://open.weibo.com/wb"> <head><met ...

  3. [deviceone开发]-QQ分享、微信分享和新浪微博分享

    一.简介 该demo主要实现QQ分享.微信分享和新浪微博分享.(调试包请到论坛扫描对应二维码下载) 二.效果图 三.相关讨论 http://bbs.deviceone.net/foru... 四.源码 ...

  4. 新浪微博--分享到微博的简单使用

    新浪微博 分享到微博方法,以下均为新浪微博提供的JS方法(我用的是.net平台) 方法1: 这个方法比较简单,只需要在你想放分享到微博的地方放入一下代码就可以了:   <script type= ...

  5. android 分享到微博客户端,Android APP集成新浪微博分享功能

    本文为大家分享了新浪微博分享功能集成,供大家参考,具体内容如下 直接导入weibosdkcore.jar:适用于只需要授权.分享.网络请求框架功能的项目. 无论使用哪一种方式,都需要先将demo中li ...

  6. php实现新浪微博分享功能,自定义新浪微博分享按钮样式

    新浪开放平台虽然有分享按钮的组件(http://open.weibo.com/sharebutton)并且提供了两种格式的应用方法:WBML和JS,但还是无法据自己的需求做到自定义样式. 为了解决该问 ...

  7. android 新浪微博签名工具,Android 集成新浪微博分享及授权 (上)

    Android 新浪微博分享及授权 在开发中遇到了各种坑....所以分享一下  希望能给大家贡献点经验 本文使用的开发的环境是 eclipse 本文叙述的新浪微博分享及其授权的内容分为两块 : 一 新 ...

  8. 新浪微博分享不显示分享的链接问题

    新浪微博分享不显示分享的链接问题 新浪微博分享成功后,明明传了URL,分享成功后,到微博查看分享的内容,没有链接,无法查看. 说来也奇怪,新浪微博并没有传过去的url作为redirecturl,不显示 ...

  9. Android 集成新浪微博分享及授权 (上)

    Android 新浪微博分享及授权 在开发中遇到了各种坑....所以分享一下  希望能给大家贡献点经验 本文使用的开发的环境是 eclipse 本文叙述的新浪微博分享及其授权的内容分为两块 : 一 新 ...

  10. iOS 新浪微博分享授权失败的问题

    From: http://snowyshell.blog.163.com/blog/static/2209140342014069331338/?latestBlog 问题:在使用ShareSDK进行 ...

最新文章

  1. 使用Maven构建Dubbo服务的可运行jar包
  2. JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫
  3. 关闭sublime更新提示
  4. 监督学习 | 朴素贝叶斯原理及Python实现
  5. 试hp服务器不识别网卡一则
  6. 【转载】架构师速成-如何高效编程
  7. 用于保存计算机输入输出数据的材料及其,与房地产,电子,金融,汽车并称五大产业的是()...
  8. linux定时器与线程,Linux下的多线程定时器实现
  9. 汇编语言 XCHG指令
  10. python教学视频k_10个Python奇趣教程,附视频讲解+练手项目。
  11. 浅谈Ubuntu 18.04.1 LTS x86_64安装,美化配置及常用软件安装配置的历程
  12. Vue directives 自定义局部指令中调用 method 中的方法
  13. 在意的越多,心理负担就越重
  14. CV2逐步学习-1.imread()详解+cvtColor()颜色空间转换
  15. 【80后回忆】经典电视剧集
  16. android crt证书,如何在android手机安装数字证书 crt和p12
  17. CodeForces - 35D
  18. 原理竟然是这!靠着这份900多页的PDF面试整理
  19. 深度学习——多层感知机
  20. 【沙拉查词】沙拉查词配置教程——如何实现截图OCR翻译、截图翻译?

热门文章

  1. 查理芒格思维模型 —— 费马帕斯卡系统
  2. Mac启动台显示白色问号图标
  3. Android新浪微博登录
  4. 分布式系统中可用性及容错性的区别
  5. 学生综合素质评价系统c语言,学生综合素质评价表自我评价范文(2)
  6. 校园火灾项目Focuse-1
  7. Windows 7 频繁提示:计算机的内存不足
  8. 华为STUN类协议需要NAT ALG进行帮助吗
  9. 504网关超时怎么解决_什么是504网关超时错误(以及如何解决)?
  10. 【吴恩达】机器学习第16章异常检测以及ex8部分编程练习