微信网页在pc可正常分享到对话,为何iOS端报错:需要scure link?
问题场景描述
在微信企业应用开发过程中,调用微信的自定义分享接口,出现了如下问题:
场景一:微信pc端分享,效果正常,如图:
场景二,Android端微信(Meizu Pro7,微信版本8.0.3 / Huawei nova 5 Pro,微信版本8.0.6)分享,在配置、调用成功后,没有弹出选择对话框,也没有任何效果。如图:
场景三,iOS端微信(iPhone 11,微信版本8.0.7)分享,在配置成功后,调用updateAppMessageShareData,报错:“ fail link must be in js secure domain list.”。选择对话分享后,显示调用onMenuShareAppMessage成功。但是聊天界面上没有自定义分享效果。如图:
场景四:各个平台的企业微信。上述问题均未出现,并且在聊天界面上正确显示自定义配置效果。
调用代码
因为微信的分享接口分为老接口,和新接口,我同时注册了两个接口:"updateAppMessageShareData","onMenuShareWechat"。
其中,参数link的值为:
link = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx70a9ca746789a0ec&redirect_uri=http://swnewtest.appchizi.com/index.html#/meeting?meetingId=174271&response_type=code&scope=snsapi_base&state=ok#wechat_redirect"
const configWx = function () {
let jsapi_ticket = sessionStorage.getSessionStorage("jsapi_ticket");
let timestamp = (new Date().getTime() / 10000).toFixed(0);
let nonceStr = "abluoik";
let href = window.location.href;
let signIndex = window.location.href.indexOf('#');
if (signIndex > 0) {
href = window.location.href.slice(0, signIndex);
}
let signature = sha1(
"jsapi_ticket=" +
jsapi_ticket +
"&noncestr=" +
nonceStr +
"×tamp=" +
timestamp +
"&url=" +
href
);
wx.config({
beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: "wx70a9ca746789a0ec", // 必填,企业微信的corpID 测试:wx70a9ca746789a0ec 生产:wxc75fbad3c7868acd
timestamp: timestamp, // 必填,生成签名的时间戳
nonceStr: nonceStr, // 必填,生成签名的随机串
signature: signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法
jsApiList: ["updateAppMessageShareData", "onMenuShareWechat" ], // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
// ,
});
}
const readyForShare = function (title, desc, link) {
wx.ready(function () {
// 客户端6.7.2及JSSDK 1.4.0往上分享接口
wx.updateAppMessageShareData({
title: title, // 分享标题
desc: desc, // 分享描述
link: link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: window.location.origin + '/logo.jpg', // 分享图标
success: function () {
// 设置成功
}
})
// 古老的分享接口
wx.onMenuShareWechat({
title: title, // 分享标题
desc: desc, // 分享描述
link: link, // 分享链接
imgUrl: window.location.origin + '/logo.jpg', // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
})
}