1.はじめに
現在、WeChatプロジェクトの開発はたくさんありますが、ログイン時にWeChatを使用して自動的にログインすることを願っています。この記事ではそれらを紹介します。
2.WeChat公式ウェブサイト-WeChatウェブサイトの承認
- ユーザーを承認ページに誘導して承認に同意し、コードを取得します
- Webページ認証access_tokenの交換コード(基本サポートのaccess_tokenとは異なります)
- 必要に応じて、開発者はWebページを更新して、access_tokenを承認し、有効期限を回避できます。
- Webページ認証access_tokenおよびopenid(UnionIDメカニズムをサポート)を介して基本的なユーザー情報を取得します
3、開発のアイデア
- コードを取得
- コードを介してWebページ認証access_tokenを取得します
- ユーザー情報をプルする
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 |