您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)invalid signature的解決方法的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
這篇文章主要介紹了微信jssdk簽名錯誤invalidsignature的解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧。
invalidsignature是什么
幾乎每一個開發(fā)用于微信公眾號頁面的工程師都遇到過微信jssdk報的各種錯誤,通常是permissiondenied,類似這樣:
通常他們會建議你把debug選項(xiàng)開開,比如這樣:
wechat.config({ debug:true, appId:appId, timestamp:timestamp, nonceStr:nonceStr, signature:signature, jsApiList:['scanQRCode'], });
結(jié)果你又遇到了invalidsignature。類似這樣:
簽名不對,這是什么意思?可是這簽名是后端給過來的,我怎么知道它為什么不對?后端用的是標(biāo)準(zhǔn)算法,不可能不對啊。
invalidsignature怎么辦
查網(wǎng)上各種教程,或者微信官網(wǎng),他們總是不厭其煩地告訴你,讓你去檢查簽名算法,然而根本沒有用!
90%的這種情況下,其實(shí)只是一個原因:你用于計算簽名的URL地址不對,跟算法沒有任何關(guān)系,完全不必浪費(fèi)時間去看什么簽名算法。
微信要求:如果我們需要在頁面中調(diào)用微信的某個方法,則必須用這個頁面的URL地址獲取簽名。聽上去似乎很好理解,但是實(shí)際上URL地址包含的部分很多,有問號,有#號,你所要做的是取出#前面的部分。比如說你的URL地址是這,那么你用于計算簽名的URL地址不可以是,也不能是,而必須只能是。
如何獲取當(dāng)前頁面的URL地址呢?這個很簡單:
letwechaturl=window.location.href.split('#')[0];
然而你以為事情就這樣結(jié)束了?太天真。你的頁面還是無法正常使用微信函數(shù)的。
因?yàn)椋何⑿艃?nèi)嵌瀏覽器在iOS和安卓下的表現(xiàn)不一樣。
在安卓下,你確實(shí)用上面的方法是可以調(diào)用了。但是在iOS下,簽名依然失敗!因?yàn)樵趇OS下,微信需要你傳遞的是入口URL,而不是當(dāng)前頁面的URL!
比如說,你在微信公眾號的某個菜單鏈接進(jìn)入了A頁面,然后從A頁面的某個鏈接跳轉(zhuǎn)到B頁面,然后你在B頁面獲取簽名,如果是在安卓下,你應(yīng)該用B頁面的URL地址來獲取,但是在iOS下,你還必須用A頁面的URL地址來獲取,否則就還是簽名失??!
感謝各位的閱讀!關(guān)于“invalid signature的解決方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。