java、vue实现微信网页分享

6 篇文章 0 订阅
6 篇文章 1 订阅

前提:拥有已认证的公众号 + 备案域名

一、微信公众号相关

在公众号的功能设置好自己的业务域名、js接口安全域名、网页授权域名(已完成备案才可以使用) 

获取公众号对应的appID、appsecret,这里一定要记得设置ip白名单,不然没有权限获取到微信的AccessToken

二、JAVA提供接口

描述:接口主要返回appid(公众号id)、timestamp(生成签名的时间戳)、nonceStr(生成签名的随机字符串)、signature(签名)

controller层: @CrossOrigin是解决跨域的



@RestController
@Slf4j
@CrossOrigin

@RequestMapping("/wx")
public class WxController {

    @Resource
    private WxSignService wxSignService;


//    /**
//     * 微信公众号通过config接口注入权限验证配置所需参数
//     * @return
//     * @throws Exception
//     */
//    @GetMapping("/getConfigData")
//    public ApiResult<Map<String, Object>> getConfigData(@RequestParam("url")String url) throws Exception {
//        WxJsapiSignature wxJsapiSignature2 = wxMpService.createJsapiSignature(URLDecoder.decode(url,"UTF-8"));
//        Map map = new HashMap();
//        map.put("fileList", wxJsapiSignature2);
//        return ApiResult.ok(map);
//    }


    /**
     * 获取signature(微信分享)
     */
    @RequestMapping(value = "/getSignature", method = RequestMethod.POST)
    public ApiResult<Map<String, Object>>getSignature(@RequestBody UrlParam param) {

        return ApiResult.ok(wxSignService.getSignature(param)).setMsg("分享成功");
        //return wxSignService.getSignature(param);
    }
//
//    }

}

完整的后端代码自行去下载使用https://download.csdn.net/download/qq_31151123/86263221

三、VUE前端代码实现

1.执行命令

npm install weixin-js-sdk

2.在需要分享的页面添加导包

import wx from 'weixin-js-sdk';

3.在需要分享的页面添加代码1.2.

wxshare是你获取后端的api接口,现在都是使用1.6的接口,微信不再支持'onMenuShareTimeline', 'onMenuShareAppMessage',,使用'updateAppMessageShareData', 'updateTimelineShareData'进行分享,分享中出现问题请查看处理办法https://mp.csdn.net/mp_blog/creation/editor/126016467

mounted() {
			this.initData();
		},

		methods: {
			//微信分享源码
			initData() {
				$_resList(this.id).then(res => {
					this.list = res.data.fileInfo;
					var urls = encodeURI(window.location.href.split('#')[
						0]); //分享成功之后再次分享,微信会再url附带额外参数造成二次分享签名错误,这里处理下避免config:invalid signature签名失效
					wxshare({
							url: urls,
							// contentType: "application/json;charset=UTF-8", //定义数据格式为JSON
							// dataType : "json",

						}).then((response) => {
							console.log("我试试", response.data.signature)
							var result = response.data;
							wx.config({
								debug: false, //生产环境需要关闭debug模式
								appId: result.appid,
								timestamp: result.timestamp, //生成签名的时间戳
								nonceStr: result.nonceStr, //生成签名的随机字符串
								signature: result.signature, //签名
								jsApiList: [
									// 'onMenuShareTimeline', 'onMenuShareAppMessage',
									'updateAppMessageShareData', 'updateTimelineShareData'
								]
							});
							const shareData = {
								title: this.list.keyword, // 分享标题
								desc: this.list.info, // 分享描述
								link: encodeURI(window.location
									.href), // 分享链接,该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致
								imgUrl: this.list.image, // 分享图标
							};
							wx.ready(function() {
								//alert("sss")
								// wx.onMenuShareTimeline(shareData);
								// wx.onMenuShareAppMessage(shareData);
								wx.updateAppMessageShareData(shareData); //“分享给朋友”及“分享到QQ”
								wx.updateTimelineShareData(shareData); //“分享到朋友圈”及“分享到 QQ 空间”
								wx.error(function(res) {
									alert(res.errMsg);
								});

							});
						})
						.catch((e) => {

						});
				});
			},

最后实现的效果如下图

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

variation8

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值