精华内容
下载资源
问答
  • H5微信分享、自定义微信分享

    万次阅读 热门讨论 2018-11-07 17:30:50
    在微信公众平台的接口权限内可以看到,个人版公众号是没有权限自定义微信分享的,所以需要企业版公众号并开通认证。 具体步骤: 步骤一:绑定域名 先登录微信公众平台进入“公众号设置”的“功能设置”里...

    在一个h5页面添加微信,分享给微信好友、朋友圈、腾讯微博

    下面来实现 。

    需要:

    1、需要一个企业版的微信公众号(认证过的)

    2、一台服务器

    企业版的微信公众号原因:

    在微信公众平台的接口权限内可以看到,个人版公众号是没有权限自定义微信分享的,所以需要企业版公众号并开通认证。

    具体步骤:

    步骤一:绑定域名

    先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。

    备注:登录后可在“开发者中心”查看对应的接口权限。(这一步骤应该没有什么问题)

    步骤二:引入JS文件

    在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.4.0.js

    如需进一步提升服务稳定性,当上述资源不可访问时,可改访问:http://res2.wx.qq.com/open/js/jweixin-1.4.0.js (支持https)。

    备注:支持使用 AMD/CMD 标准模块加载方法加载(没问题,很简单,一个script就搞定了)

    步骤三:通过config接口注入权限验证配置

    所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用,目前Android微信客户端不支持pushState的H5新特性,所以使用pushState来实现web app的页面会导致签名失败,此问题会在Android6.2中修复)。

    wx.config({
        debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
        appId: '', // 必填,公众号的唯一标识
        timestamp: , // 必填,生成签名的时间戳
        nonceStr: '', // 必填,生成签名的随机串
        signature: '',// 必填,签名
        jsApiList: [] // 必填,需要使用的JS接口列表
    });

    这一步就有很大的问题了,这么多的参数是从哪里来的!

    ——1.先不管其他的,我们现在所需要的:(appId是微信公众号的appId,可以写死或者服务器返回)

      timestamp: , // 必填,生成签名的时间戳
        nonceStr: '', // 必填,生成签名的随机串
        signature: '',// 必填,签名

    这样看来,其实真正需要的是 signature 签名

    ——2.看下signature 的生成流程:

    生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。

    1.参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):../15/54ce45d8d30b6bf6758f68d2e95bc627.html

    2.用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket):https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi

    上面的是官方的文档,说要拿到并且缓存 access_token 接口调用凭据 和 jsapi_ticket 临时票据,拿着access_token 去获取jsapi_ticket ,获得jsapi_ticket之后,自己生成个随机字符串(不懂的,网上百度怎么搞)加上时间戳,加上url地址,自己拼接好,最后进行sha1处理,就得到signature, 很是扯皮!另外access_token 一天的次数2000次jsapi_ticket 一天的次数是100万次,都缓存下来,也可以只缓存token;(我是只缓存了token)

    ——这里说一下 access_token 

    access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

    公众平台的API调用所需的access_token的使用及生成方式说明:

    1、建议公众号开发者使用中控服务器统一获取和刷新Access_token,其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致access_token覆盖而影响业务;

    2、目前Access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新新access_token。在刷新过程中,中控服务器可对外继续输出的老access_token,此时公众平台后台会保证在5分钟内,新老access_token都可用,这保证了第三方业务的平滑过渡;

    3、Access_token的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口,这样便于业务服务器在API调用获知access_token已超时的情况下,可以触发access_token的刷新流程。

    公众号和小程序均可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在“微信公众平台-开发-基本配置”页中获得(需要已经成为开发者,且帐号没有异常状态)。调用接口时,请登录“微信公众平台-开发-基本配置”提前将服务器IP地址添加到IP白名单中,点击查看设置方法,否则将无法调用成功。小程序无需配置IP白名单。

    简单来说就是调用微信的分享接口,需要用到一个凭证access_token,而这个凭证是有数量和有效时间限制的,所以需要用自己的服务器做缓存处理,当access_token过期后再去请求新的access_token,需要一台服务器和配置ip白名单。

    PHP来做的话:

     a. 先定义个access_tokenjson文件,我选择用json文件存,没有用数据库存

    {
        "access_token": "xxx",
        "expires": 12345
    }

     b.jssdk.php文件: 文件夹目录要有修改权限 sudo chmod -R 777 your_dir 

    思路:先取缓存的token的时间,与现在的时间对比,如果现在的时间大于缓存时间,则把现在时间+7200赋给缓存的时间,如果超时请求新的token,如果没超时用缓存的token,再生成jsapi_ticket,生成signature签名。

    步骤四:通过ready接口处理成功验证 又回到前端页面上

    wx.ready(function(){
        // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
    });

    配置好就可以用分享接口了

    分享接口

    自定义“分享给朋友”及“分享到QQ”按钮的分享内容(1.4.0)

     

    wx.ready(function () {   //需在用户可能点击分享按钮前就先调用
        wx.updateAppMessageShareData({ 
            title: '', // 分享标题
            desc: '', // 分享描述
            link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            imgUrl: '', // 分享图标
            success: function () {
              // 设置成功
            }
    });

    更多接口可以去文档里看

     

    展开全文
  • 微信分享获得图片和文字描述,微信分享源码,手机网页分享源码,独立编写源码,帮助微信初学者学习分享代码源码
  • 微信分享信息弹出提示操作说明 朋友圈微信分享代码 微信分享信息弹出提示操作说明 朋友圈微信分享代码
  • 微信分享案例

    2018-03-23 15:45:20
    微信 分享 微信分享 朋友圈 微信 分享 微信分享 朋友圈
  • asp代码是自己编写的,一直在用,公众号申请一下APPid,asp微信 token 换取 微信分享 微信支付代码,asp微信 token 换取 微信分享 微信支付代码,
  • 微信分享js

    2016-07-25 16:40:04
    微信分享js 微信分享js
  • 本文主要介绍网页微信二次分享中楼主踩过的坑,希望对大家有所帮助,之前写过的相关微信分享的文字这里指一下路:微信分享 使用weixin js sdk 兼容 旧版本【微信分享微信分享集成 使用weixin js sdk 兼容 旧版本 ...

    本文主要介绍网页微信二次分享中楼主踩过的坑,希望对大家有所帮助,

    之前写过的相关微信分享的文字这里指一下路:

    微信分享 使用weixin js sdk 兼容 旧版本

    【微信分享】 微信分享集成 使用weixin js sdk 兼容 旧版本 2

    【cordova ionic2 微信分享】使用 cordova-plugin-wechat 做微信分享的注意点


    微信官方文档指路:

    微信JS-SDK说明文档


    坑1:

    公众号没有按时续费,

    如果没有按时给公众号缴费,那么JS-SDK将无法正常工作,如果使用了JS-SDK中,即使是之前Debug打开时都报OK的,只要一旦公众号失效(没有缴费),Debug也会直接报错说无法使用


    坑2:

    公众号中对应位置的“JS接口安全域名”配置不正确

    JS接口安全域名一般配置到一级域名即可,

    还有另外一个业务域名不影响JS-SDK的调用,但是不配置业务域名,可能会造成分享到朋友圈打开时,微信给多包了一层丑丑的UI,或者在有输入框的时候顶部会弹安全提示

    接着坑1造成的影响,如果之前都JS-SDK的分享都正常工作,而因为没有按时续费造成的公众号失效,那么当再次付费后,之前配置的JS接口安全域名和业务域名都需要重新配置


    坑3:

    确保没有踩坑1和坑2情况下,可能发生的JS-SDK的Debug报错:Sample中自动检测的Http和Https的坑,

    如果你看了官方提供的Sample中的jssdk.php(楼主用php,Sample中的其它没有研究),

    那么

    // 注意 URL 一定要动态获取,不能 hardcode.
    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";

    这个说不要HardCode到还不如HardCode,如果你的域名用了https的证书,并且用了强制跳转or服务器集群策略(将https的请求分发给内部多台服务器),php这里拿到的protocol是不正确的,将会拿到http,而实际地址上却是https

    这个动态获取错误就会导致Debug报错,建议这里不HardCode话,可以在初始化时,和appid和appsecret一样从外部参数传入


    坑4:

    A分享给B时,Debug没报错,而分享的图片A和B都看不到,

    可能原因1:A手速太快,还没等浏览器页面进入条走完就点了分享(进度条没走完,一般分享初始化也没完成),这个只能怪A手速太快,页面完全加载完成后再分享A和B应该就都能看到

    可能原因2:图片路径错误,这个就是低级错误了

    可能原因3:图片路径正确(在普通浏览器访问能访问得到),但是连接中存在特殊字符,比如|(ucloud的缩略图服务中带水印就会用到|符号),是在需要用这种连接地址的情况下,需要php(楼主就用的php,别的语言请自行测试)帮忙做一下跳转


    坑5:(此坑不仅限于网页的二次分享,app分享到微信的链接也是同理)

    A分享给B时,Debug没报错,分享的图片A自己能看到,B却不能看到,同样的图片作为朋友圈分享A和B却都能看到

    恭喜你在分享文案中踩到了微信爸爸的敏感词

    楼主碰到的不能碰的敏感词为“抢到了大红包”(在分享给朋友的描述中,desc那个字段,不知道title会怎样,楼主没有测试),“大红包”和“抢了大红包”的组合,目前在分享中能看到图片的

    不太懂微信爸爸这个文案的敏感词为什么会影响分享的图片


    关于坑5的更新:(2018-05-23)

    微信爸爸出台明文规定,标题和描述不能写的太夸张,不然分享出去的链接中的标题、描述和图片都不按你设置的来(链接还是能正常工作,只是外部ui会变),具体请看

    (以上新闻内容来源:泡面小镇公众号文章 点击左边蓝字可看链接内容)


    坑6:

    超过3个月未使用appsecret,系统已进行重新设置,

    这时候需要去公众平台拿最新的appsecret,替换即可

    https://blog.csdn.net/fjnjxr/article/details/78070348

    这篇文章中说的是可以拿到appsecret,目前最新的政策是微信不再明文存储appsecret,所以需要去公众号自己重置并记好appsecret


    新政策:

    1 微信不再告知分享成功/失败(原成功和取消的回调会合并为一个)

    相关政策链接:

    https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&announce_id=11526372695t90Dn&version=&lang=zh_CN



    2 微信朋友圈外链禁止使用含有用户隐私数据的浮层

    相关政策的链接:

    https://mp.weixin.qq.com/s?__biz=MjM5NjM4MDAxMg==&mid=2655078183&idx=1&sn=29eb1516fc3044f8673bfb9eca4b8a58&pass_ticket=o%2BtPKbeTrk%2B6UlmBVW5377yDzy91C5a6322%2FTePg3aVaZbHOM0DarvAqxUGURFyZ



    祝福大家都能顺利搞定微信分享

    展开全文
  • 微信分享接口

    2019-04-10 11:20:16
    微信分享接口,支持自定义分享到、微信朋友圈、腾讯微博、QQ聊天、QQ空间、微信聊天等。
  • 微信分享,实现打开微信,分享文字,后续加其他功能,待完善。
  • 课程讲解了Unity如何接入微信登录 微信分享 微信支付 支付宝支付
  • js微信分享API

    2020-12-08 19:26:08
    本文为大家分享了js微信分享实现代码,供大家参考,具体内容如下 微信分享Js API 功能: 1、分享到微信朋友圈 2、分享给微信好友 3、分享到腾讯微博 4、隐藏/显示右上角的菜单入口 5、隐藏/显示底部浏览器工具栏 6、...
  • 微信分享链接的缩略图和标题

    万次阅读 2017-12-11 18:00:47
    一、微信分享微信内打开链接后,点右上角【…】选择【发送给朋友】或【分享到朋友圈】,这种分享方式获取缩略图的方法: 方法一:在页面 body 最上方添加 300*300 像素的 img 如该图片不需要显示,可以用 css ...

    一、微信内分享


    在微信内打开链接后,点右上角【…】选择【发送给朋友】或【分享到朋友圈】,这种分享方式获取缩略图的方法:

    • 方法一:在页面 body 最上方添加 300*300 像素的 img

    如该图片不需要显示,可以用 css 隐藏,但不能直接对 img 设置 display: none;

    可以在父层 div 上设置 display: none; 或者对 img 设置 position: absolute; visibility: hidden;

    <div style="display:none;"><img src="/img/thumbnail.png" alt=""></div>
    
    • 方法二:通过微信 JS-SDK 的分享接口

    这种方法需要一个微信公众号的 app_id,同时需要一个后端服务生成 signature。好处是可以定制分享的标题、缩略图、描述。

    二、从浏览器分享


    在浏览器打开链接后,点分享图标,选择【微信】,这种分享方式获取缩略图的方法:

    在页面的 head 部分添加 Open Graph Metadata

    <meta property="og:type" content="website" />
    <meta property="og:title" content="页面标题">
    <meta property="og:description" content="页面描述">
    <meta property="og:image" content="http://www.example.com/img/thumbnail.png">
    <meta property="og:url" content="http://www.example.com/">
    

    其中 og:image 影响浏览器分享时的图标,需要指定图片的完整路径。

    https://github.com/thedaviddias/Front-End-Checklist

    展开全文
  • 微信分享脚本

    2016-07-03 19:41:42
    专为前端工程师准备的微信分享脚本 无需了解后端语言,通过简单配置即可完成微信分享功能 单文件脚本,适合少量页面的程序,内含使用说明
  • Net微信分享.rar

    2019-10-15 08:51:03
    基于.net的微信分享demo,分为三个文件 微信工具类,ashx接口,供前端调用。使用微信进行第三方登录,微信登录,微信分享,朋友圈分享的demo,
  • 二、配置微信分享的SDK 三、微信分享示例 四、微信分享的结果回调 五、微信分享的踩坑总结 一、申请应用 1、首先到 [ 微信开放平台官网] 申请注册帐号,这些流程就忽略了到官网一看...

    一、申请应用


    1、首先到 [ 微信开放平台官网] 申请注册帐号,这些流程就忽略了到官网一看自然就知道怎么走,感觉在这里没有必要说很多。
    2、申请一个移动应用,填写完成你的应用信息。其他的没啥,最主要的是要填对你的签名和包名,否则SDK调不起来。包名大家都懂,主要是这个签名的过程需要提醒一下:
    1)签名全部是小写,没有大写。
    2)签名填的是MD5,不是SHA1更不是SHA256,有的同学不小心就搞错了
    这里获取应用签名的方法有二。

    第一个方法:先假设我们的应用已经有签名文件了(这里就不讲解生成签名文件的过程了,Android Studio提供的生成签名文件的方法已经很简单了,这里不赘述)。在命令行输入以下命令:

    keytool -list -v -keystore 目标签名文件路径
    

    然后输入一下签名文件的密码后就出来很多签名文件的信息:
    签名
    注意是复制出里面的指纹证书下的MD5那一串。
    然后自己手动把大写字母改成小写字母,并且把冒号都去掉。这样子就得到了签名。

    第二个方法:简单粗暴,微信开放平台提供给我们一个签名获取的工具,点击这里跳转
    这里写图片描述
    然后把apk安装到手机后,正确输入你的应用包名后就获取到了一串签名:
    这里写图片描述

    把这串签名填写到你申请的应用配置里面。

    搞定,等待微信审核。
    审核完成后得到AppID 和 AppSecret 。注意这两个,等下要用到。

    二、配置微信分享的SDK


    可以直接到官网下载jar包或者配置依赖:

    dependencies {
        compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
    }
    

    或者

    dependencies {
        compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
    }
    

    (其中,前者包含统计功能)

    然后我们添加如下权限:

    
    <uses-permission android:name="android.permission.INTERNET"/>
    
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    

    三、微信分享示例


    1、首先我们需要像微信注册我们申请的应用,在前面我们申请的应用审核完后的APP_ID 和APP_SECRET 就填写在这里:

    private static final String APP_ID = "123456"; 
    private static final String APP_SECRET = "123456";
    private IWXAPI api;  
    //向微信注册app
    public void register(Context context) {   
    	if(api==null){
    	    api = WXAPIFactory.createWXAPI(context, APP_ID, true);  
    	    api.registerApp(APP_ID);        
        }
    }
    

    这部分代码没有限制性需要在哪里执行,你可以放在Application的onCreate,也可以在Activity,笔者推荐放在你要做分享的Activity里。

    接下来就是编写分享的代码了。微信分享有文字、图片、链接、音乐、视频这几种方式,分享的途径有分享到好友、分享到朋友圈。
    由于不同分享方式的原理相同,这里我们就拿分享网页链接的例子来说
    以下是分享网页链接的代码:

    WXWebpageObject webpage = new WXWebpageObject();
            webpage.webpageUrl = "网页链接";
            final WXMediaMessage msg = new WXMediaMessage(webpage);
            msg.title = "网页标题";
            msg.description = "网页内容";
            
            Bitmap thumb = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.xxx);
            if(thumb != null) {
                Bitmap mBp = Bitmap.createScaledBitmap(thumb, 120, 120, true);
                thumb.recycle();
                msg.thumbData = bmpToByteArray(thumb,true);
            }
           SendMessageToWX.Req req = new SendMessageToWX.Req();    //创建一个请求对象
        req.message = msg; 
        //req.scene = SendMessageToWX.Req.WXSceneTimeline;    //设置发送到朋友圈
        req.scene = SendMessageToWX.Req.WXSceneSession;   //设置发送给朋友
        req.transaction = "设置一个tag";  //用于在回调中区分是哪个分享请求
        boolean successed = api.sendReq(req);   //如果调用成功微信,会返回true
    

    关于bmpToByteArray方法如下:

        fun bmpToByteArray(bmp: Bitmap, needRecycle: Boolean): ByteArray? {
            val output = ByteArrayOutputStream()
            bmp.compress(Bitmap.CompressFormat.JPEG, 100, output)
            if (needRecycle) {
                bmp.recycle()
            }
            val result: ByteArray = output.toByteArray()
            try {
                output.close()
            } catch (e: Exception) {
                e.printStackTrace()
            }
            return result
        }
    

    好了,正常的话到这一步我们已经能够调起微信对好友分享网页链接了。
    而往往事与愿违,现实和理想差距太大。有很多同学到这一部却碰到很多问题,比如:

    1、调不起来,微信一点反应都没有;
    2、能分享给好友、但是显示不了网页链接的图片;
    3、能分享给好友,自己能看到网页链接的图片,但是朋友看不到。

    问题的答案如下:
    第一个问题:调不起来,微信一点反应都没有
    首先你得保证填写的包名和签名是一定正确的,签名你如果不确定是否正确的话就最好用官方的签名获取apk来校验一下。
    其次,你得确保有没有注册了?我们在代码的第一步写的:
    WXAPIFactory.createWXAPI(context, APP_ID, true);
    如果都确保是没问题的,那么就要从图标入手了,这是微信文档的一个大坑

    我们在分享链接的时候填写图片,这个bitmap不能超过32kb(事实上,你需要看你接入的SDK版本,查看WXMediaMessage#checkArgs() 方法就可以看到对byte数量的限制)
    如果传给微信的bitmap太大的话,则微信会无任何反应,Log也看不出什么出错。
    所以有了这一步:

    Bitmap mBp = Bitmap.createScaledBitmap(thumb, 120, 120, true);
    

    或者把你的图切小一点。也许就能调起来了。
    第二个问题:能分享给好友、但是显示不了网页链接的图片
    这个问题其实也是跟bitmap的大小有关,跟问题一差不多。所以建议两个方法,要么把图片切小一点。要么代码控制图片的大小,使之在正常的范围内。

    第三个问题:能分享给好友,自己能看到网页链接的图片,但是朋友看不到
    前面两个问题其实还好,至少稍微百度一下就能解决。而第三个问题着实坑爹。好友看不到你的网页图片,会让你误以为是问题二导致的,结果一顿修改都解决不了问题。
    而其实,这个是跟微信的一个敏感词检测系统,如果你的网页分享内容里面包含了“红包”、“领取”等等之类的词语,极有可能造成问题三的产生,而微信目前没有公布哪些敏感词不通过,所以出现这个问题的话你一定要注意修改你的标题和内容了,只能把表达方式换一个,再试一下。

    四、微信分享的结果回调


    说了这么多,想必你已经能调起微信进行分享了吧。我们还没说到微信的回调,其实微信的回调说起来也是比较坑的,如果没接触过的话,这个回调也能耗了你不少时间。
    微信的回调有四大坑,这里通过踩坑的方式来完成示例:

    1、新建WXEntryActivity(坑一:新建的WXEntryActivity类包名路径不对)
    长话短说,这里千言万语融成一句话:一定要在建立一个 包名.wxapi.WXEntryActivity
    比如你的包名是:com.example.demo。那么你就得配置一个com.example.demo.wxapi.WXEntryActivity
    千万要注意,不要随便乱放这个Activity,也不能改名,就叫WXEntryActivity。包名跟你申请应用的时候填写的包名一致。

    2、向AndroidManifest.xml注册WXEntryActivity(坑二:没有配置android:exported=“true”)

      <activity android:name=".wxapi.WXEntryActivity"
                android:exported="true"
                android:launchMode="singleTop"
                ></activity>
    

    注意看清楚没?多配置了一个 android:exported=“true”,这个属性代表着运行被外界程序所启动这个Activity,微信对于我们的app来说就是外部程序了,要回调我们的Activity,没有这个万万不行。千万要注意

    3、实现IWXAPIEventHandler接口,注册API(坑三:没有在onCreate里注册API)
    这个接口有两个方法:

    @Override
        public void onReq(BaseReq baseReq) {
            
        }
    
        @Override
        public void onResp(BaseResp baseResp) {
    
        }
    

    分别是我们做出的请求和请求的结果回调。我们的业务逻辑便是从onResp方法里写的
    然后一定要 千万要 万万要注册api、八成没有接收到回调的同学们就是没有这一步:

      @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //注册API 没有这个不会执行onResp
            api = WXAPIFactory.createWXAPI(this, WXModel.APP_ID);
            api.handleIntent(getIntent(), this);
            LogUtils.i(TAG, " handleIntent:" + api.handleIntent(getIntent(), this));
        }
    

    4、在onResp方法里编写分享后的回调处理逻辑(坑四:回调处理逻辑搞错)
    其实到这一步回调就可以完成了。剩下的是我们的回调回来页面后的业务逻辑,从onResp来处理。
    在这里特别注意提醒同学们,由于微信的登录和分享都是一样放在这个WXEntryActivity里面,所以在onResp方法里面我们必须做出区分,通过baseReq.getType()可以得到回调的类型,在ConstantsAPI接口里面定义了微信回调的很多类型,需要我们自己来区分
    这里写图片描述

    然后通过状态码:resp.errCode 来得知分享的结果(成功、失败、取消等等),正常成功的话是resp.errCode==BaseResp.ErrCode.ERR_OK,取消分享是BaseResp.ErrCode.ERR_USER_CANCEL。

    好了,到这一步的时候我们就绕过这么多个坑,基本做对的话就能成功分享链接出去并且回调分享结果。

    最后,由于微信的回调机制,我们没办法做出其他处理,一定只能通过在固定的包名路径下新建这个类来完成回调,如果你实在不想微信显示这个页面的话,那么也可以通过广播、或者EventBus来吧结果回调出去,然后结束页面。这样子注册了广播接收或者EventBus的Actibity就能接收到回调的结果:

     @Override
        public void onResp(BaseResp baseResp) {
            if (baseResp.getType() == ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX) {
                Intent intent = new Intent("SHARE_WX_ACTION");
                intent.putExtra("errCode", baseResp.errCode);
                sendBroadcast(intent);
                finish();
            }
        }
    

    五、微信分享的踩坑总结


    到这里,微信分享的过程就结束了,你学会了吗?
    由于坑比较多,在最后我们再总结下微信分享都有哪些需要注意的地方:

    1、配置签名的坑
    解决:一定要MD5、小写、不要带冒号,最好用官方给的签名获取工具。
    2、没有注册API
    解决:API是运行重复注册的,并且也不是耗时任务,所以不妨放在Activity的onCreate下面,记得写这个。
    3、分享的图标
    解决:分享的图标大小不能限制(32K)。
    3、分享图标自己能看到,好友看不到
    解决:修改分享的标题和内容,不要触及微信的敏感词检测系统,多试几下。
    4、没有回调
    解决:一定要注意WXEntryActivity的包名路径是否正确,已经配置export=true
    5、确定了问题4后还是调不起来
    你确定有在WXEntryActivity的onCreate里面注册API并且调用 api.handleIntent(getIntent(), this);? 估计你没有吧?
    6、回调到其他页面
    解决:没办法直接回调到其他页面,但可以通过广播、EventBus等通知的实现来通知其他页面刷新,同时结束WXEntryActivity的页面。

    展开全文
  • 微信分享代码

    热门讨论 2013-06-18 12:28:32
    微信分享,分享图片功能,登录微信,分享到朋友圈子、或者分享到空间里
  • 本文主要讲述:在thinkphp框架中,如何获取微信分享接口权限、如何设置安全域名、如何修改微信分享标题、修改微信分享描述、修改微信分享图片、如何定制微信分享内容
  • Android:微信登录,微信分享demo 源码

    千次下载 热门讨论 2015-09-11 17:46:25
    使用微信进行第三方登录,微信登录,微信分享,朋友圈分享的demo,了解详情,请进入:http://blog.csdn.net/xiong_it/article/details/48317527
  • Android 接入第三方登录 微信登录。 Android 微信登录,微信分享好友,微信分享朋友圈demo,
  • 微信分享朋友圈

    2013-08-15 16:15:09
    微信分享朋友圈,好友,微信分享朋友圈微信分享朋友圈,好友,微信分享朋友圈
  • 微信分享完整demo

    2018-12-02 11:02:02
    微信分享完整demo,带appid,同时有签名文件,下载可用
  • 微信分享 js

    热门讨论 2014-07-11 23:26:15
    微信分享Js API 功能: 1、分享到微信朋友圈 2、分享给微信好友 3、分享到腾讯微博 4、隐藏/显示右上角的菜单入口 5、隐藏/显示底部浏览器工具栏 6、获取当前的网络状态 7、调起微信客户端的图片播放组件 8、关闭...
  • 微信分享ASP版

    2018-09-24 00:50:26
    微信分享ASP版本 绝对能用的版本,主力服务器测试过,欢迎使用。
  • 微信分享后端接口

    2018-07-31 14:49:40
    简单的对前端微信分享需要的参数进行生成,针对access_token的次数时长限制加以优化,再五数据库情况下保存分享的点击量
  • 主要为大家详细介绍了微信分享调用jssdk实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • h5微信分享代码

    2016-08-22 09:47:06
    h5微信分享代码详细代码,请参考腾讯微信官方h5开发文档!!!
  • 解决微信分享留在微信页面的时候再返回没有成功回调。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 275,268
精华内容 110,107
关键字:

微信分享