生成签名代码:
这里有一个很容易出错的地方就是 $curLink, 如果直接自己手动拼接,不采用系统$_SERVER,会出错。因为链接在微信打开的时候,微信会自动会自动加上 $_GET 参数, 如果你不把 link 拷贝出来看,不会发现。这点需要特别注意。
如果你发现使用微信的工具生成的签名与自己生成的签名还是报错的话,那么问题很可能就是link不对
$readyTime = time(); $curLink = "http://www.test.com{$_SERVER[‘REQUEST_URI‘]}"; $readyStr = "jsapi_ticket={$jsTicket}&noncestr=test×tamp={$readyTime}&url={$curLink}"; $signature = sha1($readyStr);
js代码
需要注意
1 curLink 需要保持一致
2 config 中的签名的属性 都是大驼峰命名,不要写错了
var imgUrl = ‘http://www.test.com/abc.jpg‘; var curLink = location.href.split(‘#‘)[0]; var shareTitle = ‘title‘; var appid = ‘yourappid‘; wx.config({ debug: false, appId: appid, //你的appid timestamp: <?php echo $readyTime;?>, // 必填,生成签名的时间戳,直接使用php准备好的时间 nonceStr: ‘test‘, //与php参与签名的串保持一致 signature: ‘<?php echo $signature;?>‘, //php生成的签名 jsApiList: [‘onMenuShareTimeline‘, ‘onMenuShareAppMessage‘] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function () { wx.onMenuShareTimeline({ title: shareTitle, // 分享标题 link: curLink , // 分享链接 imgUrl: imgUrl, // 分 success: function () { }, cancel: function () { } }); wx.onMenuShareAppMessage({ title: shareTitle, // 分享标题 desc: ‘desc‘, // 分享描述 link: curLink , // 分享链接 imgUrl: imgUrl, // 分 type: ‘‘, // 分享类型,music、video或link,不填默认为link dataUrl: ‘‘, success: function () { }, cancel: function () { } }); });