不知道有沒有網友遇到過同一個web應用用不同的域名(一級或二級域名)在兩個公眾號中調用JSSDK相關接口實現功能,
這種做法本來沒有問題,問題在於用二級域名(同屬一級域名下的二級域名)綁定另一個web應用的ip在上面兩個公眾號中的其中一個做測試時,
問題就出現了。
我們先理一下jssdk調用的流程,
1、利用appId與appSecret得到access_token;
2、利用access_token得到jsapi_ticket臨時票據;
3、通過算法獲得隨機字符串$nonceStr
4、利用jsapi_ticket=$jsapiTicket &noncestr=$nonceStr ×tamp=$timestamp &url=$url獲取$signature簽名;
5、jsapi_ticket、url、$timestamp、$nonceStr、$signature、appId共同組合成微信配置參數。
6、配置成功后可調用相關接口。
重點在於配置是否成功,
access_token與jsapi_ticket都時效性兩個小時,使用時必須緩存,以免觸發頻率限制;
問題回來上面說的同一個眾號中有兩個應用在調用js接口,一個是生產的,已經上線的,一個測試的,專用測試用,兩個應用都是主域名下的二級域名,
這時會出現接口調用沖突。!!!!
原因是如果安全域設置了一級域名,那它下面的二級域名同樣可以調用js接口,也就是說一級域名與其下面的兩級以下的域名統一對應一個公眾號,
它們請求生成的access_token與jsapi_ticket具有唯一性,當一個域名請求后,另一個域名下調用時所使用的緩存access_token與jsapi_ticket就會失效,
從而調用失敗。
簡單來說, 一個公眾號只能對應一個域名(包括其下面的二級以上域名),無論多少級域名調用接口,它們access_token與jsapi_ticket 是唯一的;
這真是折磨死人