微信公众号自定义分享链接踩坑记

申请微信公众测试号(个人微信公众号没权限,需要微信认证的企业号!!)

https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

可选natapp

以下所有操作 后台请求和页面都要在此安全域名下  不能加http://  有坑 并关注测试号

springboot配置:

<dependency>
    <groupId>com.github.binarywang</groupId>
    <artifactId>wx-java-mp-spring-boot-starter</artifactId>
    <version>3.5.4.B</version>
</dependency>

wx:

  mp:

    app-id: XXXXXXXXXXX

    secret: XXXXXXXXXXX

后端代码

@Autowired
private WxMpService wxMpService;

@GetMapping(value = "/test")
public String test() throws WxErrorException {
    WxJsapiSignature jsapiSignature = wxMpService.createJsapiSignature("http://evdb28.natappfree.cc/XXX/1.html");//当前html页面url,也是分享链接,与下面link保持一致,很坑
    return JSON.toJSONString(jsapiSignature);
}

页面代码

<!DOCTYPE html>
<html>
<head>
   <title></title>
</head>
<body>

</body>
<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script type="text/javascript">
         // alert(appId +" " + nonceStr +" "+jsapi_ticket+" "+timestamp+" "+signature);
         $.getJSON("/test",function(res){//请求后端数据
            console.log(res);
            wx.config({
               debug : true, //开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
               appId : res.appId, //必填,公众号的唯一标识
               timestamp : res.timestamp, // 必填,生成签名的时间戳
               nonceStr : res.nonceStr, //必填,生成签名的随机串
               signature : res.signature, // 必填,签名,见附录1
               jsApiList : [ 'onMenuShareAppMessage', 'onMenuShareTimeline' ] //必填,需要使用的JS接口列表,所有JS接口列表 见附录2
            }); // end wx.config


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

                    wx.checkJsApi({
                        jsApiList : [ 'onMenuShareAppMessage' ], // 需要检测的JS接口列表,所有JS接口列表见附录2,
                        success : function(res) {
                            // 以键值对的形式返回,可用的api值true,不可用为false
                            // 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
                            alert(res.checkResult);
                            alert(res.errMsg);
                        }
                    }); // end checkJsApi

               wx.onMenuShareAppMessage({
                  title : '分享好友标题', // 分享标题
                  desc : '分享好友描述', // 分享描述
                  link : "http://evdb28.natappfree.cc/XXX/1.html", // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                  imgUrl : 'http://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505419265109&di=cc30743d364e5ae89172c62a662e1321&imgtype=0&src=http%3A%2F%2Fpic.qqtn.com%2Fup%2F2017-6%2F14973136731543515.jpg', // 分享图标
                  type : '', // 分享类型,music、video或link,不填默认为link
                  dataUrl : '', // 如果type是music或video,则要提供数据链接,默认为空
                  success : function() {
                     // 用户确认分享后执行的回调函数
                     // alert('share successful');
                  },
                  cancel : function() {
                     // 用户取消分享后执行的回调函数
                     // alert('share cancel');
                  }
               }); // end onMenuShareAppMessage


               wx.onMenuShareTimeline({
                  title : '分享朋友圈标题', // 分享标题
                  link : "http://evdb28.natappfree.cc/XXX/1.html", // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                  imgUrl : 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505419265109&di=cc30743d364e5ae89172c62a662e1321&imgtype=0&src=http%3A%2F%2Fpic.qqtn.com%2Fup%2F2017-6%2F14973136731543515.jpg', // 分享图标
                  success : function() {
                     // 用户确认分享后执行的回调函数
                  },
                  cancel : function() {
                     // 用户取消分享后执行的回调函数
                  }
               }); // end onMenuShareTimeline
            }); // end ready

            wx.error(function(res) {
               // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
               alert(JSON.stringify(res));
            });
         });

 
</script>
</html>

确保pc端console无错误信息

微信端打开网页弹出正确信息即设置成功    

右上角分享至好友或朋友圈即可看到自定义分享

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 是一种流行的前端框架,可以用于构建用户界面。为了实现仿写微信公众号自定义菜单,我们可以按照以下步骤进行: 1. 安装 Vue:首先,我们需要在项目中安装 Vue。可以使用 npm 或者 yarn 进行安装,运行命令 `npm install vue` 或者 `yarn add vue` 完成安装。 2. 创建 Vue 组件:通过 Vue 的组件化特性,我们可以创建一个专门用于自定义菜单的组件。可以在组件中定义菜单的结构和样式,并提供相应的交互逻辑。 3. 使用 Vue Router:Vue Router 是 Vue 官方的路由管理器,可以用于实现页面间的跳转。通过配置路由,在不同的路径下展示不同的页面内容,使用户可以在不同菜单之间进行切换。 4. 获取菜单数据:在组件中,我们可以通过调用后端的接口获取微信公众号自定义菜单数据。可以使用 Vue 的生命周期钩子函数,在组件挂载之前获取数据,并将数据保存在组件的 data 中。 5. 渲染数据:将获取到的菜单数据渲染到页面中。可以使用 v-for 指令遍历菜单项,并使用 v-bind 将数据绑定到相应的元素上。这样就可以根据菜单数据动态渲染出自定义菜单。 6. 实现菜单交互功能:通过为菜单元素添加点击事件,可以实现菜单的交互功能。例如,当用户点击菜单项时,可以触发相应的事件,如跳转到对应的页面或展开子菜单。 7. 样式设计:通过调整样式,使菜单界面与微信公众号的样式一致。可以使用 CSS 进行样式设计,并使用 Vue 的样式绑定功能将样式应用到菜单组件上。 通过以上步骤,我们可以使用 Vue 实现仿写微信公众号自定义菜单。这样用户就可以在仿真的菜单界面上进行操作,实现类似微信公众号自定义菜单功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值