ホームページ  >  に質問  >  本文

java - 微信开发网页授权

在授权成功的页面刷新一次就会出报错
{"errmsg":"code been used, hints: [ req_id: Rwakxa0262th10 ]","errcode":40163}

伊谢尔伦伊谢尔伦2712日前1336

全員に返信(7)返信します

  • PHP中文网

    PHP中文网2017-04-18 10:57:04

    この問題を解決します。
    それはおそらくしばらくの間起こったでしょう。
    WeChat を承認する場合、WeChat は公式にガイド アドレス (A.action) を使用して別のアドレス (B.action) にリダイレクトすることを許可します。2 番目のアドレス (B.action) でコードを取得し、それをコードと交換できます。 .access_token、refresh_token など。ほとんどの場合、初回はユーザー情報を取得できますが、2 回目の更新時に errcode":40163,"errmsg":"code used というメッセージが表示されます。これは、コードが一度使用されたことを意味します。公式ドキュメントには、コードが一度しか使用できないことが明確に記載されています。もちろん、更新するかどうかに関係なく、同じコードを使用するのが初めてではない限り、上記のエラーが報告されます。
    これは私がそれを解決した方法です。B.actionでは、最初にコードによって取得されたaccess_tokenとrefresh_tokenがセッションに存在するかどうかを判断します(存在しない場合は、エンティティオブジェクトにカプセル化するのが最善です)。これは、コードが初めて使用されたことを意味します (ページは以前に閉じられました)。存在する場合は、セッションに移動して、access_token または fresh_token を直接取得します。取得したaccess_tokenとrefresh_tokenを使用してユーザー情報を取得します。
    私の言ったことがお役に立てば幸いです!

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 10:57:04

    リマインダーは非常に明確ですcode已经被使用了,code使用できるのは 1 回だけです。

    返事
    0
  • PHPz

    PHPz2017-04-18 10:57:04

    認証の処理部分に問題があります。認証後、ユーザー情報がセッションに保存されませんでした。その結果、ページを更新した後、ユーザーが存在しません。セッション内の情報ですが、アドレスにはコードパラメータが含まれているため、認証を取得するためにコードを取得しましたが、コードはすでに使用されており、コードは一度しか使用できません

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:57:04

    以上です。OAuth2.0 の認可 URI は、応答タイプ、認可コード、状態などのパラメーターを指定します。認可コードを取得するには、WeChat OAuth2.0 認可インターフェースを呼び出し、さまざまな appid appsecret を渡します。このコードはサードパーティ (つまり、あなた、つまりユーザーが WeChat 上の自分のリソースへのアクセスを許可する) によって、OAuth 認可サーバーと AccessToken を交換するために使用されます。これは、私が話した認可 URI によって使用されるパラメーターを呼び出すことになります。 OAuth2.0の仕様では、URIによって返されるパラメータにはAccessTokenやRefreshTokenなどがあり、このAccessTokenを使用してリソースサーバーへの認証を行い、ユーザーリソースを取得することができます。セキュリティのため、この認証コードは AccessToken と 1 回だけ交換できます。

    それでは、WeChat の承認インターフェイスには、応答タイプ、リダイレクト URI、状態、appid、appsecret などのパラメーターが含まれており、そのロジックでは、ユーザーは最初にこの承認インターフェイスを呼び出し、次に承認 (またはサイレント承認) を行います。ユーザーが承認を確認しても、WeChat 承認インターフェイスは引き続き呼び出されます。WeChat 承認サーバーは、設定したリダイレクト URI にリクエストをリダイレクトし、この URI に URL パラメーター コードと状態を追加します。 . コードを作成すると、サーバーはこのリダイレクトを通じて認証コードを受け取り、このコードを使用して AccessToken を交換し、WeChat 内のユーザーのさまざまなリソース (オープン ID など) を取得できます。

    それでは、更新時にエラーが発生するのはなぜだと思いますか? 私は、自分のサーバーの URL を更新しているのに、同じコードが再び取得され、その後、当然のことながら、そのエラー コードを引き換えているのではないかと考えています。再利用されます。

    返事
    0
  • 阿神

    阿神2017-04-18 10:57:04

    2 つの連続したリクエスト (ユーザー情報と引き換えに同じコードを使用) により、コードが 2 回目に使用されたときにこのエラーが発生するかどうかに注意してください

    返事
    0
  • ringa_lee

    ringa_lee2017-04-18 10:57:04

    WeChat Pay をクリックしましたか? 支払いを呼び出した後、もう一度 [Pay] をクリックすると、エラーが報告されます。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 10:57:04

    元の投稿者でも同じ問題が解決しましたか?

    返事
    0
  • キャンセル返事