文章目录

昨天下午6点半,微信官方团队正式开放JSAPI接口,和一群做微信开发的大牛第一时间开始测试。

通过测试发现架设在自己域名上的页面大部分接口都能用,但自定义分享在安卓上就是用不了。


官方的要求是公众号必须微信认证才可以使用JSAPI(见下图)

JSAPI权限表

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

开发者中心截图

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

JS安全域名截图

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

JS安全域名截图

但在手机微信中打开页面,检查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的自定义分享,要满足以下条件:

  1. 认证的公众号(服务号、订阅号)
  2. 域名经过ICP备案(否则分享次数会受限)
  3. 页面所在的域名加入了JS安全域名
  4. 页面的初始化(wx.config)参数中有申请分享接口权限,而且签名是正确的。

    注意必须动态签名,如果jsapi_ticket失效,签名也就会错误。
    如果url带有?a=1&b=2这类参数,是要包含在url里参与签名的。而#line100这样跟在url后边的锚点,就不要算在url里参与签名了。

  5. 微信客户端版本要更新,安卓和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版本中已经解决,但老版本客户端仍存在此问题。

文章目录