Autorización de cuenta oficial de WeChat

La configuración de la plataforma pública es más importante y determinará directamente si puede tener éxito. Me tomó dos días desde que miré el documento hasta estudiar el efecto, así que quiero registrar el proceso en detalle, ¡y espero que tenga un efecto directo en usted!

Configuración de plataforma pública

Primero abra la plataforma pública de WeChat, inicie sesión con la cuenta de la cuenta pública de WeChat e ingrese a la página de inicio-Herramientas para desarrolladores-Cuenta de prueba de la plataforma pública
Inserte la descripción de la imagen aquí
Escanee el código, obtendrá el ID de la aplicación y el secreto de la aplicación de una cuenta de prueba, y
luego la página se desplegará : Tabla de permisos de la interfaz de experiencia- —Servicio web - cuenta web - autorización web para obtener información básica de usuario, haga clic en la siguiente modificación y configure su propia IP en ella o tiene un nombre de dominio y un nombre de dominio, y yo configuro la dirección IP aquí. Al configurar esto para completar el redirect_url más tarde, se verificará el nombre de dominio de su lado y debe ser coherente.
Inserte la descripción de la imagen aquí
No mires lo que dije tan fácilmente. Solo lo descubrí ayer más una mañana y media hoy. Cualquier problema encontrado es muy complicado.

La interfaz inicia la autorización para obtener el código

Cree una página de autorización 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>

Aquí: AppID no necesita que le diga que ingrese su número de prueba AppID
redirect_uri. Aquí puede ver que el sitio web oficial tiene instrucciones. Primero, la URL debe transcodificarse por urlcode y el nombre de dominio en el medio debe completarse antes de configurarlo en la configuración "Autorización web para obtener información básica del usuario". Nombre de dominio. No hay nada más que explicar.

Crea un 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;
				// }
			}
		});

Aquí urldata es un js introducido desde el exterior, y su función es interceptar los parámetros en la url.

Importar un 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;
};

Luego, vaya a la herramienta de desarrollo WeChat (porque el salto de página web es inútil), abra la interfaz de acceso auth.html, él saltará a index.html con el parámetro de código, y luego lo interceptará y lo enviará al backend para su verificación.

Backstage Java, mala escritura, no rocíe

    @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;
    }

Elija la herramienta HttpClientUtils

Hacer una publicidad

Grupo de intercambio técnico, proporciona un paquete de apertura automática gratuito para herramientas como la serie jerbrant idea webstorm.
Intercambio de intercambio técnico ②grupo: 272712006
intercambio de intercambio técnico ③grupo: 1093476453
dirección del tutorial de aprendizaje bilibili: https://space.bilibili.com/439411741/video
简 书 dirección : Https://www.jianshu.com/p/133af2e4fe3f

Supongo que te gusta

Origin blog.csdn.net/Curtisjia/article/details/106065111
Recomendado
Clasificación