微信网页在pc可正常分享到对话,为何iOS端报错:需要scure link?
发布于 6 年前 作者 leiwei 497 次浏览 来自 官方Issues

问题场景描述

在微信企业应用开发过程中,调用微信的自定义分享接口,出现了如下问题:

场景一:微信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 +
        "&timestamp=" +
        timestamp +
        "&url=" +
        href
    );
    wx.config({
        betatrue// 必须这么写,否则wx.invoke调用形式的jsapi会有问题
        debugtrue// 开启调试模式,调用的所有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安全域名一致
            imgUrlwindow.location.origin + '/logo.jpg'// 分享图标
            successfunction () {
                // 设置成功
            }
        })
        // 古老的分享接口
        wx.onMenuShareWechat({
            title: title, // 分享标题
            desc: desc, // 分享描述
            link: link, // 分享链接
            imgUrlwindow.location.origin + '/logo.jpg'// 分享图标
            successfunction () {
                // 用户确认分享后执行的回调函数
            },
            cancelfunction () {
                // 用户取消分享后执行的回调函数
            }
        });
    })
}
回到顶部