微博官方分享接口已停用,现唯一可靠方式是构造Web Share URL:需encodeURIComponent编码title(必填)、url(必填)和pic(可选HTTPS图片),并确保window.open在用户点击事件中同步触发。

微博分享按钮的官方接口已停用,别再找 share 或 weibo.js
微博在 2021 年底正式下线了所有第三方网页调用的 JS SDK 分享接口(包括 WBPopup、WBShareButton),现在直接引入 http://tjs.sjs.sinajs.cn/t35/share/share.js 会返回 404,页面报错 ReferenceError: sinaSSOController is not defined。想靠一行 script 标签实现一键分享,这条路已经走不通了。
用微博 Web Share URL 手动拼接参数最可靠
目前唯一稳定可用的方式是构造微博的分享跳转链接,用户点击后在新标签页打开微博发布页,预填内容。关键参数只有三个:url(当前页地址)、title(分享文案)、pic(可选图片 URL)。注意:所有参数必须 encodeURIComponent 编码,否则中文乱码或截断。
示例代码(纯前端,无需后端):
<button onclick="shareToWeibo()">分享到微博</button>
<script>
function shareToWeibo() {
const title = encodeURIComponent('这是一篇很实用的技术笔记');
const url = encodeURIComponent(window.location.href);
const pic = encodeURIComponent('https://example.com/cover.jpg'); // 可为空字符串
const weiboUrl = `https://service.weibo.com/share/share.php?title=${title}&url=${url}&pic=${pic}`;
window.open(weiboUrl, '_blank', 'width=600,height=500');
}
</script>
-
title和url必填,pic可传空字符串('')或省略(但建议显式传空,避免 URL 拼错) - 微博对
pic有校验:必须是公网可访问的 HTTPS 图片,且宽高比建议 1:1 或 16:9;非 HTTPS 或 404 图片会被忽略 - 不要用
window.location.origin + window.location.pathname拼 URL——漏掉 search/hash,应统一用window.location.href
移动端适配要点:避免被微信拦截、确保弹窗触发
在 iOS 微信内置浏览器中,window.open 默认被禁用,直接调用会静默失败。必须把分享逻辑绑定在用户真实点击事件中(不能异步延迟、不能放在 Promise.then 里),且推荐加一层「点击态反馈」提升体验。
立即学习“前端免费学习笔记(深入)”;
- 微信内可 fallback 到长按复制链接 + 提示“请粘贴到微博 App 打开”
- Android 微博 App 自带唤起协议,但需用户已安装;尝试唤起时用
location.href = 'sinaweibo://share?...',但成功率低且无回调,不建议作为主路径 - 按钮
onclick中不要做 fetch 或 await,否则 iOS Safari 会判定为非用户手势触发,弹窗被拦截
为什么不用第三方封装库?
市面上有些 npm 包(如 social-share-kit、vue-wechat-share)仍试图兼容微博旧接口,或硬塞 Web Share API(navigator.share),但微博根本不支持该标准。实际测试中,这些库在微博场景下要么白屏、要么跳转首页、要么提示“参数错误”。你花时间配 appId 和签名,最终发现微博压根不认——因为它的分享页根本不需要鉴权,只认 URL 参数。
真正需要关注的只有三件事:参数编码是否正确、图片是否可达、弹窗是否由用户点击直接触发。其他任何“高级封装”,都是在给不可靠的假设加戏。



















