微信访问外链无法分享给朋友或朋友圈、且不支持开放标签

近日,在处理微信开放标签的时候,又遇到个问题…
微信访问外链的分享他人和分享朋友圈被禁了,是的,被官方禁了(当然,微信开放标签也被禁了,不然我也不会发现这个问题)。
问题如下,既在聊天框直接点击某链接,如https://www.moudu.com,便会跳转到以下页面:
在这里插入图片描述
这时候,点击继续访问可以进入页面,但进去页面后,点击微信右上角的三个点想分享给朋友的时候,图标不见了:
在这里插入图片描述
既如果进入过那个提示中间页,微信就会将分享好友、分享朋友圈、微信开放标签wx-open-launch-app(我目前已知的就这是三个,因为就用到这三个)的api功能禁用掉。

那怎么规避这个限制呢?
(1)当然是使用微信让你使用的方式,既分享卡片,在app中将卡片分享到微信中,用户点击打开,便可以分享给好友、朋友圈,且能使用微信开放标签的相应功能。
(2)将链接先发到群里再点击访问也可以规避这个限制(我不懂为什么在群里访问就可以,这和没限制有啥区别?这和微信限制外链的初衷不符,盲猜是产品漏测了,预言一手之后群里访问的也会禁掉,预言中了请踹我一脚)。

从描述来看,小程序分享功能中配置的目标路径被嵌套到了另一个页面路径之后。这是因为微信小程序在某些场景下可能会将分享接附加到当前页面的路径上。因此,我们需要明确地告诉系统不要附加当前页面路径。 以下是解决问题的具体步骤及修改方案: --- ### 分析问题 1. **预期结果**: 分享后跳转的实际目标路径应为: `/xlj_scity/pages/my/index?wb_url=<编码后的link>&vs=3` 2. **实际结果**: 跳转路径变成了: `xlj_scity/pages/share/index.html?<完整的目标路径>` 这表明微信小程序自动将当前页面路径 (`/xlj_scity/pages/share/index`) 添加到了最终 URL 前面。 --- ### 修改方法 #### 方法一:调整 `query` 参数结构 你可以尝试把完整的查询参数作为单独字段传递给 `path` 属性,而不是放在 `query` 字段里。具体代码如下: ```javascript onShareTimeline: function () { var a = this; var shareData = a.data.shareUrl || {}; // 确保存在默认值 // 拼接 path 和 query 参数 let targetPath = '/xlj_scity/pages/my/index'; let queryString = "wb_url=" + encodeURIComponent(shareData.link || '') + "&vs=3"; let fullPath = `${targetPath}?${queryString}`; let shobj = { title: decodeURIComponent(shareData.title || '默认标题'), // 解码标题 imageUrl: shareData.imgUrl || '', // 图片地址 path: fullPath // 完整的目标路径 }; console.log('onShareTimeline', shobj); return shobj; }, ``` 在这个版本中: - 我们显式拼接了完整的路径字符串 `fullPath`。 - 使用 `path` 来指定目标页面路径,而非 `query`。 --- #### 方法二:强制清除上下文路径 如果你发现上述方法仍然存在问题(可能是由于框架限制其他原因),可以尝试以下更激进的方式——手动构造完整的 URL,并将其放到 H5 页面部应用中打开。 注意这种方式可能不符合小程序内直接跳转的需求,仅供特殊需求参考: ```javascript onShareTimeline: function () { var a = this; var shareData = a.data.shareUrl || {}; let shobj = { title: decodeURIComponent(shareData.title || '默认标题'), imageUrl: shareData.imgUrl || '', path: '', // 清空本地路径 href: 'https://yourdomain.com/xlj_scity/pages/my/index?' + 'wb_url=' + encodeURIComponent(shareData.link || '') + '&vs=3' }; console.log('onShareTimeline', shobj); return shobj; } ``` 这里我们将真正的目标路径转移到了一个形式(通过 `href` 实现)。这种做法适用于希望用户点击分享内容后离开小程序的情况。 --- ### 注意事项 1. 小程序对于分享路径有一定的规则约束,请查阅官方文档确认最新规范; 2. 测试过程中确保所有变量均存在有效值,特别是动态生成的部分如 `shareData.link`; 3. 如果仍有异常情况发生,可通过调试工具观察网络请求细节定位根本原因。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值