最近在写一个小程序,其中使用到了wx.agentConfig获取“launchMiniprogram”,打开小程序页面。
然后在安卓中可以正常打开,在苹果手机中打不开。
期间更换了n次引入的js,头大最后发现是授权的url在苹果手机和安卓中获取的不一样,导致页面授权签名报错40093
{"errMsg": "agentConfig:invalid signature more info at https://open.work.weixin.qq.com/devtool/query?e=40093"}
以下为简略代码
第一部,引入的wx链接
<script src="https://res.wx.qq.com/wwopen/js/jsapi/jweixin-1.0.0.js"></script>
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
第二部授权url,问题就出现在这 login_url 的最后 #wechat_redirect文章来源:https://www.toymoban.com/news/detail-741495.html
methods: {
redirect() {
// 当前企业的 corp_id
const corp_id = 'xxxxxxxxx';
// 重定向 URL
const redirect_uri = encodeURI('http://xxxx.xxxxx-xxxxx.cn/#/wxGoApplet');
// 授权链接 URL
const login_url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${corp_id}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect`
// 向授权链接 URL 跳转
window.location = login_url;
},
}
//第三步,在/wxGoApplet页面中跳转小程序文章来源地址https://www.toymoban.com/news/detail-741495.html
getOauthUser() {
this.loading = true;
let that = this;
let url = window.location.href;
that.redirect_uri = url.split("#")[0];
let p = url.split("?")[1];
let query = new URLSearchParams(p);
that.code = query.get("code");
// 在这里进行判断,在苹果手机中url会出现字符转码 #wechat_redirect 变 %23#wechat_redirect,查询如果有就进行替换,安卓手机中不会出现#wechat_redirect,故没有这个问题
if (that.redirect_uri.indexOf("%23") > -1) {
that.redirect_uri = that.redirect_uri.replace("%23", "%2523");
}
// 请求后端接口获取签名认证
getWeixinSignature(encodeURIComponent(that.redirect_uri), "app").then(
(res) => {
// this.meg1 = res.data.data;
if (res.data.code === 200) {
that.openDefaultBrowser(res.data.data);
}
}
);
},
openDefaultBrowser(info) {
// 初始化qywx-js-sdk
let that = this;
wx.agentConfig({
corpid: "xxx",
agentid: 000000, // 数据格式为number
timestamp: info.timestamp,
nonceStr: info.noncestr,
signature: info.signature,
jsApiList: ["launchMiniprogram"], // 需要使用的JS接口列表
success: function (res) {
wx.invoke(
"launchMiniprogram",
{
appid: "xxxxxxx", // 需跳转的小程序appid
path:
"pages/login/login?page=", // 所需跳转的小程序内页面路径及参数。非必填|| page 为需要跳到小程序的页面路径
},
(result) => {
that.msg = result;
setTimeout(() => {
// window.close();
wx.closeWindow(); // 关闭中间的H5页面
}, 1000);
if (result.err_msg == "openDefaultBrowser:ok") {
// 打开默认浏览器成功后的回调函数
console.log("打开浏览器~~~result", result);
}
}
);
},
fail: function (res) {
// this.meg5 = res;
console.log(res);
that.fail = res;
if (res.errMsg.indexOf("function not exist") > -1) {
alert("版本过低请升级");
}
},
});
},
到了这里,关于微信小程序在苹果手机中打不开小程序页面,wx.agentConfig没有执行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!