小型マイクロチャンネル法の開発では、問題ログが発生しました。マイクロチャネルアプレットのログイン操作は、最初は必ず返すために失敗したときでpad block corrupted
、その後、ログインが成功するだろう時に再度ログオンします。このような間違い、Baiduは、ほとんどの原因であると述べsession_key
、時代遅れの電話番号データを復号化による、復号化エラー。特定の分析:
1、ログインコードのロジック:
- 最初のステップは、マイクロチャネルのマイクロチャネルの電話番号を取得し、ログインボタンをクリックすることです
- 第2のステップは、暗号化されたデータの成功の後に電話番号を取得することです、ログインインターフェイスを要求するマイクロ手紙がする
wx.login()
取得しますcode
- 第三の工程である
code
バックエンドようにサーバに要求を渡すseesion_key
とopenId
- 第四のステップでは、貫通背景である
session_key
とopenId
暗号化された文字列の電話番号を解読し、自己サインオンシステムを動作ログ。
問題の原因:
ここでの問題は、理由が撮影した第三のステップで、説明はステップ第4工程で表示されているsession_key
返された復号化エラーを引き起こし、誤っpad block corrupted
。しかし、につながるsession_key
第2のステップは呼び出すことです間違った原因wx.login()
メソッドが更新されますsession_key
。暗号化された電話番号はデータがオリジナルで撮影した最初のステップですのでsession_key
、今、暗号化session_key
に戻って取得する第三の工程で、その結果、リフレッシュseesion_key
新たに取得するための時間seesion_key
の誤差に復号化するために、その後の時間を。
ソリューション:
- 1.あなたは、電話番号、発信者取得するために呼び出す前に
login()
方法を、私たちは保証することができますがseesion_key
、同じです。 - 2.
wx.checkSession
決定現在の方法は、seesion_key
有効期限が切れた場合、転送上、期限が切れているwx.login
方法。期限が切れていない、その後、第二段階、第三ステップをスキップ第四歩を踏み出します。
ます。https://www.jianshu.com/p/f904e44a31f1で再現