WeChat公式アカウント認証

パブリックプラットフォームの構成はより重要であり、成功できるかどうかを直接決定します。ドキュメントを見てから効果を調べるまでに2日かかったので、詳細にプロセスを記録し、それが直接影響を与えることを期待しています。

パブリックプラットフォームの構成

まず、WeChatパブリックプラットフォームを開いて、WeChatパブリックアカウントアカウントでログインし、ホームページを入力します-開発者ツール-パブリックプラットフォームテストアカウント
ここに画像の説明を挿入
コードをスキャンすると、テストアカウントのappIDとappsecretが
表示され次にページがドロップダウンします—Webサービス— Webアカウント—基本的なユーザー情報を取得するためのWeb認証、次の変更をクリックして独自のIPを構成するか、ドメイン名とドメイン名を持っています。ここでIPアドレスを構成します。これを後でredirect_urlに入力するように構成すると、あなたの側のドメイン名が検証され、一貫性がなければなりません。
ここに画像の説明を挿入
私がそんなに簡単に言ったことを見ないでください、私はそれを昨日と今日の朝1時間半だけ理解しました。遭遇した問題は非常に厄介です。

フロントエンドはコードを取得するための承認を開始します

承認ページauth.htmlを作成します。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	</body>
	<script type="text/javascript" src="js/jquery.min.js"></script>
	
	<script>
		$(document).ready(function(){
     
     
			window.location.href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxcde95b1e2e57959c&redirect_uri=http%3A%2F%2F192.168.124.46%2Findex.html&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
		})
	</script>
</html>

ここ:AppIDでテスト番号AppID
redirect_uriを入力する必要はありません。ここでは、公式Webサイトに手順が記載されています。最初に、URLをurlcodeでトランスコードする必要があり、「基本的なユーザー情報を取得するためのWeb認証」構成で構成する前に、中央のドメイン名を入力する必要がありますドメイン名。説明することは他にありません。

index.htmlを作成します。

var _code = '';
		var flag = true;
		$(window).load(function() {
			var code = urldata("code");
			if (code != '' && code != null) {
				_code = code;
				console.log('授权成功:' + _code);
				$.ajax({
					url: '/rest/wx/code',
					type: "POST",
					data: {
						code: _code
					},
					success: function() {
						alert("发送成功!");
					}
				})
			} else {
				console.log("发送失败!");
				//本页面发送请求
				// if (flag) {
				// 	window.location.href =
				// 		"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxcde95b1e2e57959c&redirect_uri=http%3A%2F%2F192.168.124.46%2Findex.html&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
				// 	flag = false;
				// }
			}
		});

ここでurldataは外部から導入されたjsであり、その役割はurl内のパラメーターをインターセプトすることです。

geturldata.jsをインポートする

function urldata(aa) {
    
    
	var params = new GetRequest();
	var bb = decodeURI(params[aa]);
	if (bb == null || bb == 'undefined' || bb == undefined || bb == 'null') {
    
    
		bb = '';
	}
	return bb;
}

function GetRequest() {
    
    
 var vars = {
    
    }, hash;
 var index_jinhao = window.location.href.indexOf('#');
 var str = window.location.href.slice(window.location.href.indexOf('?') + 1);
 if (index_jinhao != -1) {
    
    
  str = window.location.href.slice(window.location.href.indexOf('?') + 1,
   window.location.href.indexOf('#'));
 }
 var hashes = str.split('&');
 for (var i = 0; i < hashes.length; i++) {
    
    
  hash = hashes[i].split('=');
  vars[hash[0]] = hash[1];
 }
 return vars;
};

次に、WeChat開発者ツールに移動し(Webページのジャンプは役に立たないため)、auth.htmlインターフェースにアクセスし、コードパラメーターを使用してindex.htmlにジャンプし、それをインターセプトして、確認のためにバックエンドに送信します。

舞台裏のJava、文章が上手い、スプレーしない

    @RequestMapping(value = "/code", method = RequestMethod.POST)
    public String getCode(String code) {
    
    
        System.out.println(code);
        if (StringUtils.isNotEmpty(code)) {
    
    
            HashMap<String, Object> map = new HashMap<>();
            map.put("appid", ParamUtils.APPID);
            map.put("secret", ParamUtils.SECRET);
            map.put("code", code);
            map.put("grant_type", "authorization_code");
            String s = HttpClientUtils.doGet("https://api.weixin.qq.com/sns/oauth2/access_token", map);

            JSONObject jsonObject = JSONObject.parseObject(s);
//            System.out.println(jsonObject);
//            Object access_token = jsonObject.get("access_token");
//            Object expires_in = jsonObject.get("expires_in");
//            Object refresh_token = jsonObject.get("refresh_token");
//            Object openid = jsonObject.get("openid");
//            System.out.println("access_token: "+access_token+'\n'+"expires_in: "+expires_in+'\n'
//            +"refresh_token: "+refresh_token+"\n"+"openid: "+openid);

            String access_token = jsonObject.getString("access_token");
            String expires_in = jsonObject.getString("expires_in");
            String refresh_token = jsonObject.getString("refresh_token");
            String openid = jsonObject.getString("openid");
            System.out.println("access_token: " + access_token + '\n' + "expires_in: " + expires_in + '\n'
                    + "refresh_token: " + refresh_token + "\n" + "openid: " + openid);
            if (StringUtils.isNotEmpty(access_token) && StringUtils.isNotEmpty(openid)) {
    
    
                String url = "https://api.weixin.qq.com/sns/userinfo";
                HashMap<String, Object> map1 = new HashMap<>();
                map1.put("access_token", access_token);
                map1.put("openid", openid);
                map1.put("lang", "zh_CN");
                String s1 = HttpClientUtils.doGet(url, map1);
                System.out.println(s1);
                return s1;
            }
        }
        return code;
    }

HttpClientUtilsツールを入手してください

宣伝する

テクニカルエクスチェンジグループ、ジャーブラントシリーズアイデアウェブストームなどのツールに無料の自動オープニングパッケージを提供します。
テクニカルエクスチェンジ共有②グループ:272712006
テクニカルエクスチェンジ共有③グループ:1093476453
bilibili学習チュートリアルアドレス:https ://space.bilibili.com/439411741/video简书
アドレス:Https : //www.jianshu.com/p/133af2e4fe3f

おすすめ

転載: blog.csdn.net/Curtisjia/article/details/106065111