1. 程式人生 > >微信分享invalid signature簽名錯誤的坑

微信分享invalid signature簽名錯誤的坑

前一段時間做了一個微信分享的東西,而且前端框架用的是VUE,被這個東西快折磨瘋了,一個列表頁,一個詳情頁,分享詳情頁的時候,會報錯invalid signature簽名錯誤。

當時就不淡定了,然後開始了排坑之路,根據官網的各種校驗錯誤問題,沒有發現有什麼區別

建議按如下順序檢查:

2.確認config中nonceStr(js中駝峰標準大寫S), timestamp與用以簽名中的對應noncestr, timestamp一致。

3.確認url是頁面完整的url(請在當前頁面alert(location.href.split('#')[0])確認),包括'http(s)://'部分,以及'?'後面的GET引數部分,但不包括'#'hash後面的部分。

4.確認 config 中的 appid 與用來獲取 jsapi_ticket 的 appid 一致。

5.確保一定快取access_token和jsapi_ticket。

6.確保你獲取用來簽名的url是動態獲取的,動態頁面可參見例項程式碼中php的實現方式。如果是html的靜態頁面在前端通過ajax將url傳到後臺簽名,前端需要用js獲取當前頁面除去'#'hash部分的連結(可用location.href.split('#')[0]獲取,而且需要encodeURIComponent),因為頁面一旦分享,微信客戶端會在你的連結末尾加入其它引數,如果不是動態獲取當前連結,將導致分享後的頁面簽名失敗。

究竟什麼導致呢,後來發現是history在微信中的問題,就是當從列表進入詳情頁的時候,往後臺傳入URL,跟你直接從詳情頁進入傳的URL不一致。比如:A=>B,分享B

這時候你需要記錄初始頁的url,解決辦法在你的main.js裡,新增

router.beforeEach((to, from, next) => {
  if (!window.initUrl) {
    window.initUrl = location.href.split('#')[0]
  }
  next()
})

然後在你的詳情頁裡B獲取

url: '....?url=' + encodeURIComponent(that.isIosOrAndroid() === 'android' ? location.href.split('#')[0] : window.initUrl)
在這裡要判斷是android還是ios,因為再android裡顯示是正常的,所以就用
location.href.split('#')[0]

直接獲取當前的url即可。

// 判斷ios還是android
  Vue.prototype.isIosOrAndroid = function () {
    let u = navigator.userAgent;
    let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1 // android終端
    let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) // ios終端
    let isStr = ''
    if (isAndroid) {
      isStr = 'android'
    }
    if (isiOS) {
      isStr = 'ios'
    }
    return isStr
  }


相關推薦

分享invalid signature簽名錯誤

前一段時間做了一個微信分享的東西,而且前端框架用的是VUE,被這個東西快折磨瘋了,一個列表頁,一個詳情頁,分享詳情頁的時候,會報錯invalid signature簽名錯誤。當時就不淡定了,然後開始了排坑之路,根據官網的各種校驗錯誤問題,沒有發現有什麼區別建議按如下順序檢查:

網頁分享 jssdk config:invalid signature 簽名錯誤

加密 times 存在 fig 註意點 pid valid component val invalid signature簽名錯誤。建議按如下順序檢查: 確認簽名算法正確,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t

開發配置JSSDK,註入權限驗證,以及invalid signature簽名錯誤解決

工具 沒有 ans dem menus true 發現 bin ces 在微信開發中很多功能都要用到微信JSSDK,關於JSSDK的使用,微信官方的文檔已經比較詳細,一定要仔細去看文檔。 <script src="https://res.wx.qq.com/open

基於weixin-java-mp 做JS簽名 invalid signature簽名錯誤 官方說明

微信JS簽名詳情請見:http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=&lang=zh_CN獲取使用者基本資訊 https://mp.weixin.qq.com/wiki

invalid signature簽名錯誤可能原因

這兩天在搞微信分享自定義,wx.config的時候總是報invalid signature錯誤,錯誤原因總結如下: 1時間戳timestamp一定要是10位數字 ,我使用nodejs寫的var timestamp = Date.parse(new Date());這裡的ti

分享提示signature錯誤

signature div width 遇到 info idt 圖片 分享 現在 本來用著好好地,突然和我說不行了.網上搜了好多,自己也不是第一次遇到分享失敗,然後看了半天代碼。最後無意中發現原來這個公眾號要年審了但沒去審核。現在是未認證。。。微信分享提示signature

公眾號支付簽名錯誤的解決方法

最近搭了一套微信公眾號支付的測試環境,微信支付的這一套流程主要卡在簽名錯誤這塊卡了一天,故記錄一下各種解決辦法,希望能幫助大家   簽名錯誤的幾種情況 1、簽名方式MD5,我是使用MD5通過的,網上看到很多同學使用了HMAC-SHA256導致通不過驗證,雖然微信的開發文件上寫了支援HMAC-S

Android整合分享功能應用簽名生成方法及分享不生效的問題

通過友盟sdk整合微博、微信、qq等分享功能時,微博和qq很順利,但在做微信整合時一直不成功。主要問題還是之前在微信開放平臺申請建立移動應用時,對應用簽名沒有填寫對,走了很多彎路現總結出來,加深記憶避

分享連結出現config:invalid signature錯誤的解決方法

當開發微信時需要做特定的頁面做分享時,根據官方提供的jssdk.php檔案建立的簽名資料包除錯時,大家碰到的最多的錯誤而且解決最麻煩的大概就是signature錯誤了,如下圖: 分享時提示錯誤“{"errMsg":"config:invalid signature"}” 一般出現這個錯

Vue怒踩JS-SDK中配置的 - 簽名錯誤

前言 這幾天公司需要做微信端h5專案,需要用到微信掃一掃功能,就需要涉及到配置微信JS-SDK的問題,怎麼配置怎麼生成簽名這邊就不說了官方文件(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115)都說的比較詳

分享連結後再次分享提示config:invalid signature

一種解決辦法,並不是都是這樣。我遇到的是這樣。 js端ajax請求傳遞引數url的時候php接收會丟失引數。 需要:url = encodeURIComponent(url); 之後再傳遞。 php端接收引數的時候會丟失引數 接收後需要使用:$url = urldeco

關於MUI集成分享遇到的

cnblogs image 框架 網上 返回值 告訴 開始 nat 微信公眾平臺   今天聊一下MUI這個框架吧!   首先,用這個框架也有很長一段時間了,項目不同,涉及到的功能也有不同,之前沒有涉及到微信分享相關的內容!今天,遇到了,也解決了,分享出來。   下面是手順:

分享 鏈接打不開 404錯誤-destoon

rul 查看 404錯誤 destoon mage p s 打開 修改 錯誤 微信分享頁面打開404錯誤 查看分享鏈接 沒問題 可以單獨打開 動態可打開 偽靜態問題 修改偽靜態 原文偽靜態(destoon) RewriteRule ^(.*)/show/([0-

關於Android分享SDK縮圖顯示不出來的一種情況!巨

那幾天本人接入了微信SDK用於公司的APP去分享某些連結到微信,但使用的過程出現了分享成功自己能顯示縮圖但對方的縮圖顯示不出來的情況,本人嘗試各種百度,各種官方文件的查閱,最後還是解決不了這個困惑,後面只好自己去研究,可研究了老半天還是一點眉目都沒有。最後,我終於知道問題所在 ↓↓↓↓↓↓↓↓↓↓

手機 網站 開發 簽名 signature node (在更新中)

在進行微信手機網站開發時,第一座大山就是獲取簽名。下面是微信JS-SDK開發文件的內容,本文主要理清思路,開發起來,就很快了。 wx.config({ debug: true, // 開啟除錯

react-native 解決分享支付 因簽名不一致導致的分享失敗

當我們在做微信微博sdk分享的時候除錯非常麻煩,因為要使用對應的簽名版本才能呼叫sdk成功。 當我們使用AndroidStudio的Gradle之後會很簡單的解決這個問題。 1.我們把簽名檔案放到工程根目錄下(這樣做是為了保持路徑的統一) 2.在Gradle中引入如下程

ShareSDk分享簽名獲取及修改後不生效的解決辦法

在微信開放平臺,獲取安卓應用簽名,有兩種方法,第一種是通過android studio命令列,命令如下:keytool -list -v -keystore H:\路徑\XXXXX.jks 重點:簽名是

分享之道

1.引入JS檔案 在需要呼叫JS介面的頁面引入如下JS檔案,(支援https):http://res.wx.qq.com/open/js/jweixin-1.2.0.js 備註:支援使用 AMD/CMD 標準模組載入方法載入 2.通過config介面注入許可權驗證配置

Android分享再次填 error -6 一閃而過

三年前公司主力專案剛開始的時候要用到微信支付和微信分享,那個時候已經填過一次坑了,可惜當時填了就填了,忘記記筆記。。俗話說得好,好記性不如爛筆頭,這次新專案需要做微信分享的時候,又不小心踩回那個坑。。。 話說就是回到申請key的時候,我本來都有印象微信開放平臺建立應用的

vue 分享設定踩

一、引入JS 在index.html頁面引入微信開發需要的js 二、eslint編譯報錯,wx undefined 在js程式碼裡直接用wx來寫程式碼,會報undefined錯誤,eslint編譯通不過。 這個的解決方法有兩種, 一種是禁止eslint檢測  在js