今天偶然的把微信jssdk的debug打開后,發現調試信息總是提示簽名錯誤,感情前兩天api的"偶爾"不生效,不是因為還沒執行代碼,而是因為簽名沒正確啊!,這就是個100%可以重現的錯誤
但只要這個SPA剛刷新過,或加載完后中途沒有跳轉,,簽名就會是正確的。
而當路由發生改變,我們對新"跳轉"的頁面重新簽名之后,卻出現了簽名錯誤,而我們的簽名明明是正確的,把各種參數拿去微信JS簽名校驗工具(http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign)去比對是一樣的!
后面重大發現。。。其實
只要加載SPA入口頁面的時候簽名一次就行了,因為微信拿來簽名的URL好像只認這個SPA第一個加載的頁面的URL。。。window.location.href跳轉其實就相當又加載了一次SPA
曾以為路由跳轉了,就應該拿新的url去重新簽名,卻恰恰因為這點,把簽名校驗給搞出錯了。。
所以解決方案就是:
只簽名第一個加載的頁面就行了,用ui-router進行的跳轉,似乎只是改了地址。。而這個地址的修改。。微信的簽名似乎不認。。他就認第一個加載的頁面的URL。
通過此文,希望能幫助到遇到此問題的朋友,謝謝大家對本站的支持!
新聞熱點
疑難解答