关于微信JSAPI分享不能使用的疑问解决
更新日期:
文章目录
昨天下午6点半,微信官方团队正式开放JSAPI接口,和一群做微信开发的大牛第一时间开始测试。
通过测试发现架设在自己域名上的页面大部分接口都能用,但自定义分享在安卓上就是用不了。
官方的要求是公众号必须微信认证才可以使用JSAPI(见下图)

而我的是认证服务号,开发者中心也显示可用。

JS安全域名也设置了,而且域名也有ICP备案:

代码中也有申请分享权限:

但在手机微信中打开页面,检查JS权限时,却没有分享的权限:

以为是可能接口没有完全通畅,就先睡觉了。到今天上午一测试,问题依旧,其他接口都可以用,就是自定义分享用不了。
就向官方发了邮件咨询。后来突然想到检查一下微信是否有更新,就到 我 - 设置 - 关于微信 - 检查新版本 ,结果居然有新版本,当前版本是6.0.2,新版本也是6.0.2。用豌豆荚一看详细信息,发现是后边的小版本不同。
我手机上安装的是6.0.2.56_r958800 (version code: 501)
,而最新版本是6.0.2.58_r984381 (version code: 520)
。
立马在手机微信中进行更新,6.0.2.58安装完毕后,进入之前的页面,检查权限,居然能用了。

测试一下,果然可以自定义分享了。

因此得出结论如下:
总结一下,想要使用JSAPI的自定义分享,要满足以下条件:
- 认证的公众号(服务号、订阅号)
- 域名经过ICP备案(否则分享次数会受限)
- 页面所在的域名加入了JS安全域名
页面的初始化(wx.config)参数中有申请分享接口权限,而且签名是正确的。
注意必须动态签名,如果jsapi_ticket失效,签名也就会错误。
如果url带有?a=1&b=2
这类参数,是要包含在url里参与签名的。而#line100
这样跟在url后边的锚点,就不要算在url里参与签名了。微信客户端版本要更新,安卓和IOS都需要更新到
6.0.2
版本及以上。安卓需要注意一下,安卓上6.0.2是有两个版本的:
6.0.2.56
是赶工限制自定义分享的,除了官方域,其他域名都没有权限调用分享接口。6.0.2.58
版本修复了这个bug,认证的公众号可以拿到分享接口权限,正常使用。
也就是说安卓版必须更新到6.0.2.58
才能正常使用自定义分享。
另外需要注意的是,签名的时候,如果url带有?a=1&b=2
这类参数,是要包含在url里参与签名的。
而#line100
这样跟在url后边的锚点,就不要算在url里参与签名了。
还有一个bug:安卓版的即使是6.0.2上使用新JSAPI,自定义分享到朋友圈接口,仍存在取消分享也返回分享成功的老问题。
安卓取消分享返回状态错误的bug官方在微信6.1版本中已经解决,但老版本客户端仍存在此问题。