zoukankan      html  css  js  c++  java
  • vue项目做微信分享总结

    在做微信分享,也是遇到了许多的坑,记录一下流程,以后做到可以直接用。

    安装sdk

    npm install weixin-js-sdk --save

    整体步骤

    1.我是新建了一个js文件wxapi.js。

    2.在wxapi.js中引入sdk以及配置一些基本信息(相关的配置内容是后台返的)

    3.在需要做分享的页面引入wxapi.js,调用里面的方法

    大概代码如下:

    wxapi.js中:

    /**
     * 微信js-sdk
     * 参考文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115
     */
    import wx from 'weixin-js-sdk'
    import Axios from 'axios'
    const wxApi = {
        /**
         * [wxRegister 微信Api初始化]
         * @param  {Function} callback [ready回调函数]
         */
        wxRegister(data,option) { //data是微信配置信息,option是分享的配置内容
            wx.config({
                debug: false, // 开启调试模式
                appId: data.appId, // 必填,公众号的唯一标识
                timestamp: data.timestamp, // 必填,生成签名的时间戳
                nonceStr: data.nonceStr, // 必填,生成签名的随机串
                signature: data.signature, // 必填,签名,见附录1
                jsApiList: [
                    'checkJsApi',
                    'updateTimelineShareData',
                    'updateAppMessageShareData',
                    'onMenuShareQQ',
                    'onMenuShareWeibo'
                ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
            })
            wx.ready(function(){
                wx.updateTimelineShareData({
                    title: option.title, // 分享标题
                    link: option.link, // 分享链接
                    imgUrl: option.imgUrl, // 分享图标
                    desc: option.desc, // 分享描述
                    success() {
                        // 用户成功分享后执行的回调函数
                        option.success()
                    },
                    cancel() {
                        // 用户取消分享后执行的回调函数
                        option.error()
                    }
                });
                wx.updateAppMessageShareData({
                    title: option.title, // 分享标题
                    desc: option.desc, // 分享描述
                    link: option.link, // 分享链接
                    imgUrl: option.imgUrl, // 分享图标
                    success() {
                        // 用户成功分享后执行的回调函数
                        option.success()
                    },
                    cancel() {
                        // 用户取消分享后执行的回调函数
                        option.error()
                    }
                })
            })
        }
    }
    export default wxApi

    需要分享的页面,如:index.vue

    1.引入wxapi.js

    import wxapi from '@/assets/js/wxapi.js';

    2.页面请求完接口之后,获取配置信息,调用wxapi.js中的方法(可以写在created中,也可以写在初始化调用的犯法里面,具体根据实际项目而定)

    wxapi.wxRegister(data,option);//data是微信配置信息,option是分享要配置的内容

    上面的步骤就已经完成了,但是还是有一些坑,分享出去图片跟说明老是没有,后来开启了调试模式,微信返回信息是签名错了。所以这里就要注意了,我们是vue做的项目,而且路由还是用的hash,所以url上面包含"#",这个时候后端返回的信息,签名一直都是错的。解决方案有两个:

    1:router.js中路由配置换成history模式

    当然,这种方式需要后台配合,具体怎么配合可以看一下https://www.cnblogs.com/chao202426/p/11168019.html这个里面的。

    2:url去掉’#’hash部分,可用location.href.split('#')[0]

    踩完坑之后自己做一下总结:

    1、一开始说要以这种点击的方式触发分享,其实目前是实现不了的

    2、浏览器中的分享,其实用的是浏览器自带的,这个分享他就没办法按照你的配置来,试了一下之后发现,浏览器中自带的分享:

      标题会取你页面的title

      图片会取你页面的img,没有的话就是去页面截图

      地址会取你当前页面的url

  • 相关阅读:
    创新工场 笔试1
    C++的异常处理
    阿里笔试题2
    阿里笔试题1
    控制CPU占用率曲线
    再探结构体字节对齐问题
    1401
    pancake sort的几个问题
    CF198 D2
    谨慎设计一个单例类
  • 原文地址:https://www.cnblogs.com/chao202426/p/11174594.html
Copyright © 2011-2022 走看看