Java WeChatPCスキャンコード認証ログイン

1.はじめに

現在、WeChatプロジェクトの開発はたくさんありますが、ログイン時にWeChatを使用して自動的にログインすることを願っています。この記事ではそれらを紹介します。

2.WeChat公式ウェブサイト-WeChatウェブサイトの承認

  1. ユーザーを承認ページに誘導して承認に同意し、コードを取得します
  2. Webページ認証access_tokenの交換コード(基本サポートのaccess_tokenとは異なります)
  3. 必要に応じて、開発者はWebページを更新して、access_tokenを承認し、有効期限を回避できます。
  4. Webページ認証access_tokenおよびopenid(UnionIDメカニズムをサポート)を介して基本的なユーザー情報を取得します

3、開発のアイデア

  1. コードを取得
  2. コードを介してWebページ認証access_tokenを取得します
  3. ユーザー情報をプルする

4、構成パラメーターのパッケージ化

すべてのApiおよびWeChatログインパラメータ(以下で準備する必要のあるパラメータ)を簡単に使用できるように構成クラスにカプセル化します。

wxopen.appid=wxa3915224f507b2
wxopen.appsecret=82380d12143533d86b0b775123b9
wxopen.redirect_url=http://xxxxx.cn/api/v1/wechat/user/callback

最初のステップ:ユーザーは承認に同意し、コードを取得します

https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
パラメータ あなたはする必要がありますか 説明
appid はい レビュー後に取得したアプリケーション固有のID
redirect_uri はい コールバックアドレス。ユーザーがコードをスキャンした後、WeChatはコードをパラメーターとしてこのアドレスに渡します(コールバックアドレスはurlEncodeで処理する必要があることに注意してください)。
response_type はい コードを入力してください
範囲 はい 複数のスコープがコンマ(、)で区切られているアプリケーション認証スコープ、Webアプリケーションは現在、snsapi_loginのみを入力します
状態 番号

リクエストとコールバックのステータスを維持し、承認リクエスト後にそのままサードパーティに戻すために使用されます。このパラメータは、csrf攻撃(クロスサイトリクエスト偽造攻撃)を防ぐために使用できます。サードパーティがこのパラメータを持参することをお勧めします。このパラメータは、検証のために単純なランダム番号とセッションに設定できます。

ユーザーがQRコードをスキャンしてアセンブルされたQRコードリンクにアクセスして承認すると、WeChatプラットフォームは上記で設定したコールバックアドレスをコールバックし、code一時的な資格情報を伝達します。次に、コードを使用してaccess_tokenを取得します。

/**
 * 拼装微信扫一扫登录Url
 * @return
 */
@GetMapping("/login_url")
public JsonData loginUrl(
@RequestParam(value = "access_page", required = true) String accessPage) throws UnsupportedEncodingException {
        String redirectUrl = weChatConfig.getOpenRedirectUrl(); //获取开放平台重定向地址
        String callbackUrl = URLEncoder.encode(redirectUrl, "GBK"); //进行编码
        String qrcodeUrl = String.format(weChatConfig.getOpenQrCodeUrl(), weChatConfig.getOpenAppid(), callbackUrl, accessPage);
        return JsonData.buildSuccess(qrcodeUrl);
}

ステップ2:access_tokenのコードを交換する

最初のステップでは、ユーザースキャンコードの承認が完了した後、WeChatは設定したコールバックアドレス(redirect_uriをコールバックしコード値を伝達します。コードを取得した後、次のことができます。

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

パラメータ

あなたはする必要がありますか 説明
appid はい WeChatオープンプラットフォームでアプリケーションがレビューおよび承認された後に取得される、アプリケーションの一意のID
秘密 はい WeChatオープンプラットフォームで承認申請を送信した後に取得したAppSecret AppSecret
コード はい 最初のステップで取得したコードパラメータを入力します
grant_type はい 承認認証コード

ステップ3:ユーザー情報を取得する

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
パラメータ あなたはする必要がありますか 説明
アクセストークン はい 資格情報を呼び出す
openid はい 現在の開発者アカウントに固有の通常のユーザーのID
lang 番号 国と地域の言語バージョン、zh_CN簡略化、zh_TWトラディショナル、英語、デフォルトはzh-CN

おすすめ

転載: blog.csdn.net/Damao1183297959/article/details/108833824