微信+angularJS的SPA應用中用router進行頁面跳轉,jssdk校驗失敗問題解決


今天偶然的把微信jssdk的debug打開后,發現調試信息總是提示簽名錯誤,感情前兩天api的"偶爾"不生效,不是因為還沒執行代碼,而是因為簽名沒正確啊!,這就是個100%可以重現的錯誤

但只要這個SPA剛刷新過,或加載完后中途沒有跳轉,,簽名就會是正確的。

而當路由發生改變,我們對新"跳轉"的頁面重新簽名之后,卻出現了簽名錯誤,而我們的簽名明明是正確的,把各種參數拿去微信JS簽名校驗工具(http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign)去比對是一樣的!

后面重大發現。。。其實

微信拿來簽名的URL好像認這個SPA第一個加載的頁面的URL。。。window.location.href跳轉其實就相當又加載了一次SPA,曾以為路由跳轉了,就應該拿新的url去重新簽名,卻恰恰因為這點,把簽名校驗給搞出錯了。。

所以解決方案就是:

SPA加載之后router跳轉的每個頁面都用入口URL簽名就行了,用ui-router進行的跳轉,似乎只是改了地址。。而這個地址的修改。。微信的簽名似乎不認。。他就認第一個加載的頁面的URL。

只在入口簽名一次在iOS上是可以的,但在安卓有些機型似乎還是會簽名不上,所以保險起見,還是router跳轉的每個頁面都簽名一次比較好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM