不知道有沒有網友遇到過同一個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 是惟一的;
這真是折磨死人