微信伺服器配置 token驗證失敗

2022-10-11 13:27:12 字數 1335 閱讀 8732

author: mon's_works

基本原理

在網頁上提交配置時,網頁會向url傳送若干引數,並期望伺服器返回其中的乙個。如果返回值正確,則配置成功,否則失敗。

實現步驟

1.後端收到請求時,從請求中獲取signature, echostr, timestamp, nonce等4個引數;

2.利用所得引數,根據官方提供的計算方法進行驗證。理論上,如果只是測試,這個驗證過程可以省略,直接返回結果。

3.返回echostr,格式為整數,而非字串。如果以字串格式返回echostr,也會提示【token驗證失敗】。

官方示例採用python 2,以下示例為python 3,有所改動,注意甄別。

from fastapi import

fastapi

import

hashlib"/

")async

def root(signature: str = '', echostr: str = '', timestamp: str = '', nonce: str = ''

): token = "

與網頁所填token一致"#

獲取請求中的引數,計算驗證

list =[token, timestamp, nonce]

list.sort()

sha1 =hashlib.sha1()

sha1.update(list[0].encode(

'utf-8'))

sha1.update(list[1].encode('

utf-8'))

sha1.update(list[2].encode('

utf-8'))

hashcode =sha1.hexdigest()

if hashcode ==signature:

print('

successed')

#需返回數字,而非字串

return

int(echostr)

else

:

print('

failed')

return 0

基本原理

利用token, timestamp, nonce三個值,計算出乙個hashcode,與引數signature進行對比。

如果後端的token值,與網頁所填寫的保持一致,那麼計算出來的hashcode就會與引數signature相同,否則就會不同,從而達到驗證的目的。

示意圖(官方)

java 微信伺服器配置 Token驗證

接收,並驗證類 controller public class wechatqrcodecontroller catch ioexception e 效驗類 public class checkoututil 將token timestamp nonce三個引數進行字典序排序 arrays.sort...

微信伺服器配置令牌 Token

同時,開發者可選擇訊息加解密方式 明文模式 相容模式和安全模式。模式的選擇與伺服器配置在提交後都會立即生效,請開發者謹慎填寫及選擇。加解密方式的預設狀態為明文模式,選擇相容模式和安全模式需要提前配置好相關加解密 詳情請參考訊息體簽名及加解密部分的文件。利用修改配置中的提交驗證token是否驗證成功!...

驗證訊息的確來自微信伺服器

校驗流程 1 將token timestamp nonce三個引數進行字典序排序 2 將三個引數字串拼接成乙個字串進行sha1加密 注意 這個方法在接入的時候呼叫,接入成功後不呼叫了 param signature param timestamp param nonce param echostr ...