Interfaz de permiso de privacidad del minijuego WeChat actualizada a Cocos2.4.11, el último método para obtener el apodo y el avatar del usuario 20230823

       ¿Por qué la salida del registro de la consola desaparece con frecuencia? ¿
  Por qué el código wxss falla con frecuencia? ¿
  Por qué el diseño wxml se vuelve un desastre? ¿
  Es una pérdida de moralidad? ¿O una falta de naturaleza humana?
  Demos  un paseo  y entremos juntos en la ciencia


Prefacio

El 15 de agosto, recibí comentarios de mis colegas de que el juego no se podía abrir. Cuando miré la versión de prueba del minijuego, la interfaz de adquisición de avatar informó un error: wx.getUserInfo() devolvería el código de estado 1026
, Así comenzó el viaje del engaño...


texto

Era demasiado vago para escribir un blog, porque cuando surgió este problema, miré los anuncios, busqué en los documentos oficiales de wx, busqué en csdn y en la comunidad de desarrollo oficial de WeChat, todos encontraron soluciones para programas pequeños e incluso oficiales. documentos de juegos pequeños. Si lo leí correctamente, ¡deben faltar dos puntos aquí! No es sólo este lugar. Lo he visto en al menos cinco o seis lugares. Aquí tienes una solución paso a paso. ¿Vale?

 1. Primero vaya a la plataforma oficial de WeChat para ajustar los permisos de privacidad
Plataforma pública de WeChat => Configuración => Descripción del contenido del servicio

Para conocer las primeras Pautas de protección de la privacidad del usuario, primero haga clic y seleccione lo que necesita usar, luego marque todo lo que necesita usar, complételo todo y guárdelo.

Luego, la segunda ventana emergente de autorización de privacidad decía que si está activada, no se puede desactivar, ignórala y actívala directamente, como no la activé, repetí el mismo error y escribí el código toda la noche.

ok ¡En este punto, todas las plataformas públicas de WeChat que deben activarse aquí se han activado y se ha subido el código!

 2. Hablemos de esto primero porque he cambiado este permiso de privacidad varias veces antes. El método anterior para obtenerlo era obtener información del usuario. Si no se puede obtener, llame a wx.createUserInfoButton() para generar un botón. Haga clic en el botón para activar el evento de autorización del usuario. Ahora está en la capa externa. Agregar otra capa de interfaz que esté de acuerdo con la autorización resolverá el problema.

Esto es lo que escribí antes:

wx.getUserInfo({
            success(res) {
                console.log("获取权限成功:", res);

                let rawData = JSON.parse(res.rawData)
                userInfo.avatarUrl = rawData.avatarUrl;
                userInfo.nickName = rawData.nickName;
                _this.login2()//这是成功获取权限后的逻辑代码

            },
            fail(err) {
                console.log(err);
                //这里是生成那个授权按钮
                var info = wx.getSystemInfoSync()
                let button = wx.createUserInfoButton({
                    type: 'text',
                    text: '授权并进入游戏',
                    style: {
                        left: info.screenWidth / 2 - 100,
                        top: 600,
                        width: 200,
                        height: 40,
                        lineHeight: 40,
                        backgroundColor: '#8D99D5',
                        color: '#ffffff',
                        textAlign: 'center',
                        fontSize: 16,
                        borderRadius: 4
                    }
                })
                button.onTap((res) => {
                    console.log(res);
                    //用户按过按钮后 同意或拒绝后的回调
                    button.hide()
                    _this.login()//这里指本方法 通过能否获取到具体的用户昵称头像内容去判断用户是否同意 同意就走wx.getUserInfo中的success了 不会再到fail里新建按钮了
                })
            },
        })

Luego configuré una interfaz fuera de wx.createUserInfoButton() y quedó así:

wx.getSetting({
            success(res) {
                if (res.authSetting['scope.userInfo']) {
                    // 已经授权,可以直接调用 getUserInfo 获取头像昵称
                    console.log("已经授权,可以直接调用 getUserInfo 获取头像昵称");

                    wx.getUserInfo({
                        success(res) {
                            console.log("获取权限成功:", res);

                            let rawData = JSON.parse(res.rawData)
                            userInfo.avatarUrl = rawData.avatarUrl;
                            userInfo.nickName = rawData.nickName;
                            _this.login2()

                        },
                        fail(err) {
                            console.log("获取权限失败:", err);
                        }
                    })
                } else {
                    wx.requirePrivacyAuthorize({
                        success: res => {
                            console.log("原因::", res);

                            // 非标准API的方式处理用户个人信息
                            var info = wx.getSystemInfoSync()
                            let button = wx.createUserInfoButton({
                                type: 'text',
                                text: '授权并进入游戏',
                                style: {
                                    left: info.screenWidth / 2 - 100,
                                    top: 600,
                                    width: 200,
                                    height: 40,
                                    lineHeight: 40,
                                    backgroundColor: '#8D99D5',
                                    color: '#ffffff',
                                    textAlign: 'center',
                                    fontSize: 16,
                                    borderRadius: 4
                                }
                            })
                            button.onTap((res) => {
                                console.log("结果::", res);

                                button.hide()
                                _this.login()
                            })
                        },
                        fail: (res) => {
                            console.log("拒绝", res);

                        },
                        complete: (res) => {
                            console.log("结果", res);
                        }
                    })
                }
            }
        })

ok De acuerdo con las instrucciones específicas de wx.requirePrivacyAuthorize escritas en el documento oficial, cuando no obtengamos la información del usuario, primero llamaremos a wx.requirePrivacyAuthorize para determinar si el usuario ha hecho clic en Acepto y luego procederemos a crear un botón posterior para aceptar obtener el apodo y el avatar. La lógica ahora está completa. La mayoría de

3. Esta compilación publica la compilación del código anterior en WeChat Developer Tools.

Primero, cambie su biblioteca de depuración a 2.32.3 o superior. Yo la cambié directamente a 3.0.1. Ayer vi que el 82% de las personas aquí optaron por cambiarla a escala de grises hoy porque esta interfaz de permiso de privacidad solo es compatible con 2.32.3. o superior.

Luego agregue esto a project.config.json

"__usePrivacyCheck__": true,

Ok. Eso es todo. Si hay algo que no recuerdo o si hay algo que me gustaría corregir, lo agregaré. Bienvenidos todos a corregirme.


Resumir

Aquí está el anuncio oficial de WeChat: Guía de desarrollo de cumplimiento de privacidad de minijuegos | Comunidad abierta de WeChat

Aquí hay una publicación de ayuda publicada por mi comunidad. Nadie le prestó atención, pero la respondí yo mismo, lo que puede considerarse como una solución. ¿  Qué permisos necesita wx.getUserInfo en el minijuego? | Comunidad abierta WeChat

Aquí están las cuatro nuevas interfaces de permisos de privacidad en los documentos de desarrollo de WeChat. Pertenecen a wx.requirePrivacyAuthorize(Object object) | WeChat Open Documents 

Ayer, durante el Festival de los Fantasmas, trabajé horas extras en la empresa hasta muy tarde. Maldije en silencio a la persona que escribió el anuncio. Vete al infierno. Pido disculpas aquí. Orz

De hecho, parece que no hay publicaciones similares sobre programas pequeños. Ayer, miré las publicaciones de la universidad y miré mi motor cocos y me puse a pensar profundamente... 

Supongo que te gusta

Origin blog.csdn.net/m0_66016308/article/details/132604539
Recomendado
Clasificación