不知道有没有网友遇到过同一个web应用用不一样的域名(一级或二级域名)在两个公众号中调用JSSDK相关接口实现功能,web
这种作法原本没有问题,问题在于用二级域名(同属一级域名下的二级域名)绑定另外一个web应用的ip在上面两个公众号中的其中一个作测试时,算法
问题就出现了。api
咱们先理一下jssdk调用的流程,缓存
一、利用appId与appSecret获得access_token;安全
二、利用access_token获得jsapi_ticket临时票据;微信
三、经过算法得到随机字符串$nonceStrapp
四、利用jsapi_ticket=$jsapiTicket &noncestr=$nonceStr ×tamp=$timestamp &url=$url获取$signature签名;测试
五、jsapi_ticket、url、$timestamp、$nonceStr、$signature、appId共同组合成微信配置参数。url
六、配置成功后可调用相关接口。spa
重点在于配置是否成功,
access_token与jsapi_ticket都时效性两个小时,使用时必须缓存,以避免触发频率限制;
问题回来上面说的同一个众号中有两个应用在调用js接口,一个是生产的,已经上线的,一个测试的,专用测试用,两个应用都是主域名下的二级域名,
这时会出现接口调用冲突。!!!!
缘由是若是安全域设置了一级域名,那它下面的二级域名一样能够调用js接口,也就是说一级域名与其下面的两级如下的域名统一对应一个公众号,
它们请求生成的access_token与jsapi_ticket具备惟一性,当一个域名请求后,另外一个域名下调用时所使用的缓存access_token与jsapi_ticket就会失效,
从而调用失败。
简单来讲, 一个公众号只能对应一个域名(包括其下面的二级以上域名),不管多少级域名调用接口,它们access_token与jsapi_ticket 是惟一的;
这真是折磨死人