博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue spa 微信jssdk二次分享不显示自定义分享内容问题解决
阅读量:5931 次
发布时间:2019-06-19

本文共 1604 字,大约阅读时间需要 5 分钟。

hot3.png

本问题仅限于vue单页应用开发时的讨论。

1、不带参数的网页,如:http://xxx.com/#/CS350001/pray/buddha,分享后打开的网址,

会变成这样:http://xxx.com/?from=singlemessage&isappinstalled=0#/CS350001/pray/buddha,多了一串字符

?from=singlemessage&isappinstalled=0,这不影响,再打开这个链接并分享,还是正常的。

2、带参数的网页,如:http://xxx.com/#/pray/videoDetail?orderId=64,分享后无法显示自定义的分享内容,这是因为url在传递给后台时带有?等特殊字符,直接传会导致验签失败,所以需要url encode下,总结如下代码:

let url = window.location.href;this.$axios({  method:"get",  url:'/wx/jssdk/config?url='+(url.indexOf('/?') == '-1'?url:encodeURIComponent(url)),}).then(function (response) {})

其中/wx/jssdk/config是我后台接口地址,代码如下:

@GetMapping("config")public @ResponseBodyJsonResult config() throws Exception {    ApiConfigKit.putApiConfig(getApiConfig());    JsTicket jsApiTicket = JsTicketApi.getTicket(JsTicketApi.JsApiType.jsapi);    String jsapi_ticket = jsApiTicket.getTicket();    String nonce_str = createNonceStr();    String url = getPara("url");    String timestamp = createTimestamp();    // 这里参数的顺序要按照 key 值 ASCII 码升序排序    //注意这里参数名必须全部小写,且必须有序    String str = "jsapi_ticket=" + jsapi_ticket +            "&noncestr=" + nonce_str +            "&timestamp=" + timestamp +            "&url=" + url;    String signature = HashKit.sha1(str);    Map
map = new HashMap(); map.put("appId", ApiConfigKit.getApiConfig().getAppId()); map.put("nonceStr", nonce_str); map.put("timestamp", timestamp); map.put("url", url); map.put("signature", signature); map.put("jsapi_ticket", jsapi_ticket); return JsonResult.success(map);}

(ps:微信开发引入了jfinal-weixin)

如此一来,无论分享多少次,都会正常显示自定义的分享内容。

 

转载于:https://my.oschina.net/junko2013/blog/3019534

你可能感兴趣的文章
估算,想爱你好难!- 视频分享第3弹!
查看>>
如何完美的将对话框设置成无边框无标题栏样式?
查看>>
HDU 114 Piggy-Bank
查看>>
音频基础知识及编码原理
查看>>
[转]Linux下的权限问题
查看>>
Notepad++搭建Python开发环境的一个小改进
查看>>
来自豆瓣的一个走过弯路的人(转)
查看>>
ios多线程学习笔记(1)
查看>>
scrollView的几个属性contentSize contentOffset contentInset
查看>>
POJ 1654 Area
查看>>
熟悉的陌生人——软件工程
查看>>
基础知识系列--Oracle的连接
查看>>
Entity Framework提供了三种加载相关实体的方法:Lazy Loading,Eager Loading和Explicit Loading...
查看>>
《Google!Android2手机应用程序设计入门》笔记(4)
查看>>
(转)AS3中 is,as,typeof的区别 .
查看>>
Fireworks为枝繁叶茂的树木图片抠底
查看>>
字符串比较考虑空格
查看>>
hduoj1108最小公倍数
查看>>
HBase异常:hbase-default.xml file seems to be for and old version of HBase的解决方法
查看>>
建模的技巧及优化
查看>>