Optimización del inicio de sesión en Mini Programas de WeChat tras el fin de wx.getUserInfo

Con el anuncio de que wx.getUserInfo quedará obsoleto, los desarrolladores de Mini Programas en WeChat deben adaptar los flujos de autorización. En lugar de invocar directamente el método para obtener información del usuario, ahora se recomienda usar un botón explícito con el atributo open-type="getUserInfo". Este cambio afecta especialmente a aplicaciones que requieren autenticación previa al uso, lo que podría demandar páginas dedicadas para la autorización inicial.A continuación, se presenta un ejemplo de implementación usando un enfoque basado en botones. El código se ha reestructurado para mejorar la legibilidad y modularidad. Archivos clave: moduloAutenticacion.js y gestorIndice.js.moduloAutenticacion.js``` const servicioHttp = require("../../utils/httpService.js") const utilidades = require("../../utils/utilidades.js") Page({ informacion: {}, alCargar: function (parametros) { let contexto = this; }, alObtenerDatosUsuario(evento) { let contexto = this; const datosCifrados = evento.detail.encryptedData; const vectorInicializacion = evento.detail.iv; if (datosCifrados && vectorInicializacion) { contexto.obtenerSesion().then((resultadoSesion) => { const cuerpoPeticion = { "codigo": resultadoSesion.code, "datosCifrados": datosCifrados, "vectorInicializacion": vectorInicializacion, "plataforma": "mini_programa_wechat" } servicioHttp.solicitar(cuerpoPeticion, "api/acceso/inicioSesionExterno").then((respuesta) => { let datosUsuario = { imagenPerfil: respuesta.data.data.avatar, nombreMostrar: respuesta.data.data.nickname, tokenAcceso: respuesta.data.data.token, identificadorUsuario: respuetsa.data.data.user_id } wx.setStorageSync("datosUsuario", datosUsuario); if (wx.getStorageSync("datosUsuario")) { wx.redirectTo({ url: '/pagina/principal/principal' }) } }).catch((error) => { utilidades.mostrarAlerta("Fallo en la conexión", "none") }) }).catch((error) => { console.error("Error en sesión:", error) }) } else { utilidades.mostrarAlerta("Autorice el acceso para continuar", "none") } }, obtenerSesion() { return new Promise((resolver, rechazar) => { wx.login({ exito: function (respuesta) { if (respuesta.code) { resolver(respuesta) } else { utilidades.mostrarAlerta("Fallo al iniciar sesión", "none") } }, fallo: function (error) { rechazar(error) } }) }) } })

gestorIndice.js


const utilidades = require("../../utils/utilidades.js") Page({ estado: {}, alCargar: function (opciones) { let controlador = this; if (!wx.getStorageSync("datosUsuario")) { controlador.verificarSesion() } }, verificarSesion() { if (wx.getStorageSync("datosUsuario")) { console.log("Sesión activa") } else { wx.redirectTo({ url: '/pagina/autenticacion/autenticacion' }) } } })

Esta aproximación con botón garantiza una experiencia de usuario más controlada, aunque difiere de las autorizaciones anteriores que aparecían como ventanas emergentes. Los desarrolladores pueden explorar alternativas como métodos híbridos o actualizaciones progresivas para transiciones suaves.

Etiquetas: WeChat Mini Programas wx.login autorización usuario JavaScript autenticación API

Publicado el 6-26 22:00