ログインアプレットは、常に最初に失敗し、二回目は確かに壊れパッドブロックを成功します

小型マイクロチャンネル法の開発では、問題ログが発生しました。マイクロチャネルアプレットのログイン操作は、最初は必ず返すために失敗したときでpad block corrupted、その後、ログインが成功するだろう時に再度ログオンします。このような間違い、Baiduは、ほとんどの原因であると述べsession_key、時代遅れの電話番号データを復号化による、復号化エラー。特定の分析:

1、ログインコードのロジック:

5447877-81f243c036d0bcb1.png
image.png
  • 最初のステップは、マイクロチャネルのマ​​イクロチャネルの電話番号を取得し、ログインボタンをクリックすることです
  • 第2のステップは、暗号化されたデータの成功の後に電話番号を取得することです、ログインインターフェイスを要求するマイクロ手紙がするwx.login()取得しますcode
  • 第三の工程であるcodeバックエンドようにサーバに要求を渡すseesion_keyopenId
  • 第四のステップでは、貫通背景であるsession_keyopenId暗号化された文字列の電話番号を解読し、自己サインオンシステムを動作ログ。
問題の原因:

ここでの問題は、理由が撮影した第三のステップで、説明はステップ第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で再現

おすすめ

転載: blog.csdn.net/weixin_33896069/article/details/91344161