首先贴上必要信息:
开发者ID(AppID):wx3806a4c78e7bf173
原始ID:gh_2314fcde77a4
以上是公众号本身的配置
接下来放一下,我这边的config代码
const modeList = [ 'updateAppMessageShareData' , 'updateTimelineShareData' , 'onMenuShareAppMessage' , 'onMenuShareTimeline' , ]; const initConfig = async (res) => { const options = { debug: !isProd, appId: res.appId, // 必填,公众号的唯一标识 timestamp: res.timestamp, // 必填,生成签名的时间戳 nonceStr: res.nonceStr, // 必填,生成签名的随机串 signature: res.signature, // 必填,签名,见附录1 jsApiList: modeList, } console.log( 'config options::----------------------------' , options); wx.config(options); // ready wx.ready(() => { console.log( 'config success::----------------------------' ); // 分享到朋友圈 wx.updateTimelineShareData({ title: '' , // 分享标题 link: '' , // 分享链接 imgUrl: '' , // 分享图标 success: function () { // 用户确认分享后执行的回调函数 }, cancel: function () { // 用户取消分享后执行的回调函数 }, }); // 分享给朋友 wx.updateAppMessageShareData({ title: '' , // 分享标题 link: '' , // 分享链接 imgUrl: '' , // 分享图标 desc: '' , // 分享描述 success: function () { // 用户确认分享后执行的回调函数 }, cancel: function () { // 用户取消分享后执行的回调函数 }, }); }) // error wx.error((res) => { console.log( 'catch config error :: =============== ::' , res); }) } |
以上代码执行之后出现如下问题
{ errMsg: "config:fail,Error: 系统错误,错误码:63002,invalid signature [20190919 17:06:41][]" jsApiList: [] } |
差了错误代码之后,发现是非法签名,好了,我先去了https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign这个校验网站校验了,signature 没有问题两边一致,但是config一直提示非法。
然后我去了https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html这边看常见解决办法。试了个遍。然而并没有效果,另外,恕我直言这个文档真实辣鸡。可能你们的核心已经是小程序了,但是小程序的BUG也一堆没修。
然后吐槽一下,这个错误码的返回,之前有返回过config:fail,Error: 系统错误,错误码:63002,invalid signature [20190919 17:06:41][undefind] 这样的格式,还不容易变成 config:fail,Error: 系统错误,错误码:63002,invalid signature [20190919 17:06:41][] 这样我也不知道啥问题,就这几个参数,咱写写明白行不,URL错就提示URL错,就一个签名错误???wtf,这里太笼统了!
好了说到URL错,好网上说99%的错误都是URL导致的,好的尝试了各种办法,并没有什么用,已经调试了不知道几天了,最后只能哀求官方帮我解决一下,帮我看看问题到底在哪里,头发都要秃了。
我用的是SPA (vue) HASH模式(https://xxx.com/#/)取得地址为 https://xxx.com/
单凡我有一点办法都不会来这请教
综上,请赐教!求快速反馈!
顺便吐槽,标题为什么一定要问号,我就是个陈述句,阐述问题而已!
两天了 这个问题 一直报错
我遇到的情况是这样解决的
在main.js里设置一下刚进入页面的url
if (navigator.userAgent.indexOf('iPhone') !== -1) {
window.wechaturl = window.location + ''
}
在获取签名的接口请求时做判断
uri = isiOS ? window.wechaturl : window.location.href // ios手机不一样
我今天也是,重头到尾检查了没有问题,后来发现,不要encodeURICompontent 这个URL
有可能是多个公众号放在同一个服务器下,有文件重复(日志文件)
人已经快疯了。
vue项目,url都已经试了一个遍了,还是不好使。
为啥报错只有一个 invalid signature 实在不知道怎么找了
前后端的参数名称、值都打印出来一一对应,如果没有猜错的话
nonceStr: res.nonceStr
这个
res.nonceStr 大小写有问题net的的路过,我用第三方组件居然也居然这问题, Senparc.Weixin.MP.Helpers.JSSDKHelper.GetJsSdkUiPackage
表示很神奇,,检查过,生成的sign,和微信工具生成的签名,结果一样,还报
config:fail,Error: 系统错误,错误码:63002,invalid signature
按步骤 获取 cgi-bin/token
/cgi-bin/ticket/getticket
都正常,签名和工具一样,还报错,
我的解决了。。我一开始也是一直提示这个问题。。坑。。由于前后端是分离的,一开始去配置服务端和前端ip白名单,还是不行,后面调试了好多次,发现当url encode一次之后直接去做签名就成功了。。。
程序打印
appId: '****', // 必填,公众号的唯一标识 timestamp: '1594370910' , // 必填,生成签名的时间戳 nonceStr: 'R95Wd41OzU', // 必填,生成签名的随机串 signature: 'cef29f3055e71f49183994beb52f634e5208f6b1',array(6) { ["protocol"]=> string(7) "http://" ["url"]=> string(51) "http%3A%2F%2Floyalty.fz1t.com%2Fadv%2FwriteScanView" ["string1"]=> string(196) "jsapi_ticket=HoagFKDcsGMVCIY2vOjf9of3bHXv6p-WLG21GArGsk0R1rTAcgtojvEHR-ns9X5Dr6ziNeWe_k_q7PUTMExFNA&noncestr=R95Wd41OzU×tamp=1594370910&url=http%3A%2F%2Floyalty.fz1t.com%2Fadv%2FwriteScanView" ["timestamp"]=> int(1594370910) ["noncestr"]=> string(10) "R95Wd41OzU" ["ticket"]=> string(86) "HoagFKDcsGMVCIY2vOjf9of3bHXv6p-WLG21GArGsk0R1rTAcgtojvEHR-ns9X5Dr6ziNeWe_k_q7PUTMExFNA" }
校验
校验百分百,怎么都是对的。url encode 或者 不encode 结果一样。手机就一直显示签名错误@Tx