1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          token驗證失敗(公眾號token驗證失敗怎么辦)

          來源:互聯網轉載 時間:2024-05-03 11:51:50

          我用的是python3+,而官網給的例子是python2的寫法。問題就在python版本不同。

          下面是截取官方的實例代碼的一部分

          list=[token,timestamp,nonce]list.sort()sha1=hashlib.sha1()map(sha1.update,list)hashcode=sha1.hexdigest()

          我就直接告訴你這一段錯了。也是在我對比微信驗證時發送的信息后才得出的結論。以下是在網上找到的加密原理,可以選擇性看看。

          當我們點擊了提交后,微信服務器會向我們所填寫的那個URL發起一個GET請求,并攜帶以下幾個參數:timestamp, nonce, echostr, signature。

          其中timestamp是一個時間戳,nonce是一個隨機數,echostr也是隨機數,這幾個都很普通,重點在于signature,它的生成方式是將nonce、timestamp和token(也就是我們在網頁中配置的TOKNE)三個字符串按照字典序排序后,對排序后得到的字符串數組使用哈希加密算法得到。

          我們的服務器在收到這個GET請求后,提取對應的參數,并按照前面說的方式生成hashcode,如果這個值與參數中的signature相同,那么我們就將echostr返回給微信服務器,否則返回空值。

          微信服務器收到這個echostr之后,驗證這個值與它發送的echostr值是否相同,如果相同,說明這個值的確是由我們的服務器返回的,從而完成驗證,今后所有的信息就都可以發送到這個服務器地址上。

          這里面涉及到了一些安全認證的相關知識,有興趣的朋友可以去查閱更詳細的資料??偟膩碚f,就是讓通信的雙方都能夠確認對方的真實身份。

          token驗證失敗的原因在于map函數。應該是python的2和3不一樣吧。map函數第一個參數是一個函數,第二個參數是一個列表。作用是把第一個函數依次作用于列表中的每個元素。

          這里我又學到了hashlib的一些東西。update是防止數據過大,所以可以用update依次添加要加密的數據。

          所以綜上可以看出,微信的加密就是現將list排序,然后依次將排序后的列表的每個元素用update合并成總的要加密的數據。貼一段代碼幫助理解

          importhashlibsha1=hashlib.sha1()sha1.update('a'.encode('utf-8'))sha1.update('b'.encode('utf-8'))sha1.update('c'.encode('utf-8'))等同于:sha1.update('abc'.encode('utf-8'))hashcode=sha1.hexdigest()#獲取加密串

          所以在python3下,加密的算法要改成如下

          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()

          經過一通折騰,終于解決問題了。忍不住吐槽,python3都這么長時間了,為什么開發文檔還不更新。而且還有好多程序都還是在python2下。唉,又是python一大詬病。

          感謝各位的閱讀!關于“公眾號token驗證失敗怎么辦”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

          標簽:token驗證失敗-

          c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...

          2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...

          :喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...

          山東金礦在萊州和招遠市。萊州是我國重要的黃金生基地,在世界范圍內也是罕見的金礦富集區。萊州已探明的黃金儲達2000多噸,是名副其實的中國黃金儲量第一市。山東招遠市的黃金資源遍布全境,藏量豐富,招遠焦家金礦是我國重要的一處金礦產地。山東金礦在哪個城市萊州市已探明100噸以上的特大型金礦產地有3個,即萊州市朱郭李家礦區金礦、萊州市焦家深部礦區金礦、萊州市新立村礦區深部與外圍金礦。山東招遠市的金礦主要集...

          公募基金reits是什么意思?公募基金reits指的是以發行預期年化收益憑證的方式匯集特定投資者的資金,由專門投資機構進行投資管理,并將投資綜合預期年化收益按比例分配給投資者的信托基金。對投資者而言,公募reits股性較強而類reits債性強。公募reits令老百姓有機會享受不動產收益,不動產90%以上的收益將由reits投資者享受,長期投資的回報率很高。公募reits發行條件有什么?1.資產規模...

          什么是結婚貸款?申請個人無抵押信用貸款作為結婚用途的就是結婚貸款。貸款的金額一般都可以滿足結婚辦酒、蜜月的所需。一般月收入在3000元以上的,都可以申請到月收入8-15倍的結婚貸款。結婚貸款的還款方式也有多種選擇,最長還款期一般為5年。結婚貸款申請條件1、貸款人年齡在18~56周歲,具有完全民事行為能力;2、貸款人的月收入必須在2000元以上;3、貸款人需有穩定的工作;4、在現在所在的單位工作滿3...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>