DDR爱好者之家 Design By 杰米
前言
今天做了个分享功能,反正挺诡异的,下面就来说一说步骤
后端使用egg.js,代码如下:
'use strict'; const Subscription = require('egg').Subscription; class AccessToken extends Subscription { static get schedule() { return { interval: '2h',//2小时获取一次 type: 'all', }; } async subscribe() { const config = this.ctx.app.config.wechat_config; const url = 'https://api.weixin.qq.com/cgi-bin/token"htmlcode">async getJSsdk() { const appId = this.ctx.app.config.wechat_config.appId;//appid const ticket = this.ctx.app.ticket;//初始化时获得的ticket const nonceStr = Math.random() .toString(36) .substr(2, 15); const timestamp = parseInt(new Date().getTime() / 1000);//秒为单位的时间戳 let url = this.ctx.query.link; //前端的页面地址 url = decodeURIComponent(url);//解码 const string = 'jsapi_ticket=' + ticket + '&noncestr=' + nonceStr + '×tamp=' + timestamp + '&url=' + url; const hash = crypto.createHash('sha1'); hash.update(string); const signature = hash.digest('hex');//生成签名 this.ctx.body = { status: true, message: '获取成功', data }; };步骤
1.在vue项目中public目录下的index.html中引入
<script src="/UploadFiles/2021-04-02/jweixin-1.4.0.js">2.在想分享的组件的mounted中加入如下代码:
//如果不创建meta标签分享出去的就会没有描述 var oMeta = document.createElement('meta'); oMeta.content = '随意的内容';//这里随便写 oMeta.name = 'keywords'; document.getElementsByTagName('head')[0].appendChild(oMeta); var oMeta1 = document.createElement('meta'); oMeta1.content = '随意的内容';//这里随便写 oMeta1.name = 'description'; document.getElementsByTagName('head')[0].appendChild(oMeta1);3.initJSSDK方法体:
function initJSSDK() { let wechaturl = window.location.href.split('#')[0];//单页应用就获取#前面的东西 let link = encodeURIComponent(wechaturl); const jssdk = await getJSSDK(link); //给后端接口传过去当前页面的地址,注意这个地址要配置在js安全域名里 wx.ready(() => { let shareData = { title: this.detail.title, desc: this.detail.summary, link: location.href, //必须是js安全域名下的地址(分享出去的没有图片显示请检查这里的link参数) imgUrl: window.wechatImg,//随意地址的图片都行,最好是jpg的,经测试无图片大小约束 success: function () { console.log(1); }, cancel: function () { console.log(2); } }; wx.onMenuShareAppMessage(shareData);//分享给好友 wx.onMenuShareQQ(shareData);//分享给手机QQ wx.onMenuShareQZone(shareData);//分享到QQ空间 wx.onMenuShareTimeline(shareData);//分享到朋友圈 }); wx.error(function (res) { console.log(res); }); wx.config({ debug: true, appId: jssdk.appId, // 必填,公众号的唯一标识 timestamp: jssdk.timestamp, // 必填,生成签名的时间戳,精确到秒(后端返回) nonceStr: jssdk.nonceStr, // 必填,生成签名的随机串(后端返回) signature: jssdk.signature, // 必填,签名(后端返回) jsApiList: ['onMenuShareAppMessage', 'onMenuShareTimeline', 'onMenuShareQQ', 'onMenuShareQZone'] }); }常见问题
无效的签名:可能是前端encode地址过去后,后端忘记解码了,也有可能是因为前端地址传错了或者没有encode就传过去了,后端签名算法出错的机率比较小.
还有可能是后端的ticket失效了(这个在开发过程中机率比较小)
无效的domain:前端给后端传的地址可能没有配置在js安全域名中
jssdk版本就用上面的1.4版本,同样的代码用了新版的就直接不行了,也没有任何报错。
暂时没有发现网上所说的苹果会出现问题。经测试都是好的
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
更新日志
2024年12月27日
2024年12月27日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]