微信公众号安全域名相关问题总结

898 阅读2分钟

jssdk给前端开发带来了很大的便利性,可以使用很多原生的相关功能。但是便利的同时,也有不少限制。其中之一便是安全域名。

正常场景

正常场景,h5中使用jssdk时,微信会进行相关验证。具体内容参考:JS-SDK

关键点:

1.公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”

2.在需要调用 JS 接口的页面引入JS 文件

3.通过 config 接口注入权限验证配置

wx.config({

  debug: true, // 开启调试模式,调用的所有 api 的返回值会在客户端 alert 出来,若要查看传入的参数,可以在 pc 端打开,参数信息会通过 log 打出,仅在 pc 端时才会打印。

  appId: '', // 必填,公众号的唯一标识

  timestamp: , // 必填,生成签名的时间戳

  nonceStr: '', // 必填,生成签名的随机串

  signature: '',// 必填,签名

  jsApiList: [] // 必填,需要使用的 JS 接口列表

});

注:wx.config相关参数,需要由后端生成,需要微信: access_tokenjsapi_ticket 来生成。

安全域名已满场景

目前,腾讯的规则是 JS接口安全域名 总数是5个,每个月修改次数是5次。但对于大一些的公司来说,这个域名个数是远远不够的。个数不够的场景下,要如何解决呢?

1.新申请一个公众号

优点:一般来说,新申请一个公众号,相对容易些。这时,就又多出来5个安全域名。

缺点:同一个大的项目中,使用不同的公众号授权安全域名,那么需要使用部分jssdk相关功能时,会出现相关提示:

这里的名称,便是公众号的名称。因为使用不同的公众号进行授权,故这里的名称便会不一致。

2.nginx等转发

如果不申请新的公众号,便可以采用nginx转发的方式来解决。

  1. 已加入js接口安全域名的相关方A,提供后台接口,供使用方B调用获取权限验证(wx.config所需相关内容)相关内容。
  2. 已加入js接口安全域名的相关方,在 域名 所在服务器下,配置nginx转发(可根据路径区分前端页面及后端接口),把B相关的请求,代理转发至B所在的服务器即可。

3.顶级域名

如果 公司顶级域名在 公众号里配置的比较早,早到腾讯还没有加校验文件,那么相关的二级域名,三级域名均可以正常使用jssdk。

以上为个人使用过程中相关总结,如有疑问,欢迎探讨。