cocosCreator 之 微信小游戏授权设置和调用wxAPI获取用户信息
版本: 3.8.0
语言: TypeScript
环境: Mac
官方文档:
微信官方文档 - 开放能力
微信 API
小游戏环境
在cocosCreator的3.x版本项目开发中,TypeScript最终会被转换为JavaScript语言。
JavaScript的运行时调用的API,依赖于宿主环境,常见的宿主环境有浏览器、Node.js 等。
不同的宿主环境提供着不同的API,比如来说:
- 浏览器有 BOM 和 DOM API,而 Node.js 则没有
- Node.js 有 fs、net 等 Node.js 核心模块提供的文件、网络 API,而浏览器则不具备
小游戏的运行环境是一个不同于浏览器的宿主环境, 它主要通过调用 wx API 的接口, 而wx API 会调用 Native提供的绘制、音视频、网络和文件等能力,实现游戏的运行。

在cocosCreator的项目开发中,我们可以通过调用 wx API的接口,来实现微信的登录、用户信息的获取、支付、分享朋友圈等功能。
本篇文章面向用户群体是使用cocosCreator做微信小游戏开发的小白群体,大神可以略过。
如果编写有不当之处,欢迎您的指出。
授权设置
通过 wx API相关接口获取用户的信息,需要用户授权同意,我们才能获取。
微信平台为了保障用户的合法权益和规范开发者对用户个人信息的处理行为,开发者需要在微信后台配置:
- 用户隐私保护指引 也就是用户协议,告知用户开发者会获取那些权限等
- 隐私授权弹窗 用于告知用户能否授权

大致的步骤:
- 账号登录:https://mp.weixin.qq.com/
- 选择 设置 --> 基本设置 --> 服务内容声明下的用户隐私保护指引,选择更新
- 打开用户隐私保护指引设置,选择第二个,然后点击确认

-
填写用户隐私保护指引设置

-
可通过增加信息类型 选择用户信息类型:

-
填写信息完毕后,可确定并生成协议
-
返回基本设置页面 后, 可打开服务内容声明 --> 隐私授权下的 设置,注意标记部分即可

最后,游戏在微信开发者工具运行的时候,如果调用了 wx API的请求授权接口,会弹出类似如下页面:

更多详情内容可参考:
微信小游戏文档 小游戏隐私合规开发指南
微信开发社区 小游戏《用户隐私保护指引》
cocosCreator调用wxAPI接口
在cocosCreator的脚本中调用 wx API接口,需要注意:
- 实现的功能,使用浏览器调试是无效的。因为微信小游戏的运行是不同于浏览器的, 可以打包后通过微信开发者工具运行调试
- Creator没有wx API接口的定义文件,因此脚本中编写
wx都会报错
针对于第2种,可通过NPM下载 wx API 的类型定义文件,以帮助我们调用方法时,有智能提示。
具体步骤:
- 打开终端命令,进入指定的项目目录内
- 运行命令:
npm install miniprogram-api-typings - 下载成功后,会放在项目目录的 ./node_modules 中
关于 NPM 的使用相关,可参考博客:Mac安装使用NPM及常用命令。
安装后,在脚本中导入即可:
import 'miniprogram-api-typings';
更多使用配置:可参考: wechat-miniprogram 的README.md文件
实战: 获取微信用户昵称和头像
使用的主要接口是: wx.createUserInfoButton
它用于创建一个按钮,用于引导玩家点击后授权,进而获取用户的昵称、头像等信息。注意:必须同意授权后,才能获取用户信息
在cocosCreator中创建一个页面,主要节点是:
- avatarNode 精灵,用于显示头像
- nameLabel 文本,用于显示昵称

然后在脚本中编写代码:
import { _decorator, assetManager, Component, ImageAsset, Label, Node, Sprite, SpriteFrame, Texture2D } from 'cc';
const { ccclass, property } = _decorator;
import "miniprogram-api-typings";@ccclass('LoginLayer')
export class LoginLayer extends Component {@property(Node) avatar: Node = null; // 头像@property(Label) nameLabel: Label = null; // 昵称protected onLoad(): void {this.createUserBtn();}private createUserBtn() {let self = this;// 避开ts语法检测const wx = window['wx'];// 创建用户授权按钮let button = wx.createUserInfoButton({type: 'text',text: '授权',style: {left: 10,top: 76,width: 90,height: 40,lineHeight: 40,backgroundColor: "#66CC00",color: "#FFFFFF",textAlign: "center",fontSize: 18,borderRadius: 10}});button.onTap((res) => {//用户授权确认,获取用户信息if (res.userInfo) {// 设置头像const avatarUrl = res.userInfo.avatarUrl;self.setAvatar(avatarUrl);// 设置昵称self.nameLabel.string = res.userInfo.nickName as string;button.destroy();} else {console.log("用户拒绝授权");button.destroy();}});}//设置头像private setAvatar(url): void {let spire = this.avatar.getComponent(Sprite);assetManager.loadRemote<ImageAsset>(url + "?aaa=aa.jpg", { ext: '.jpg' }, (err, imageAsset) => {if (err) {return console.error(err.message);}let sp = new SpriteFrame();let texture = new Texture2D();texture.image = imageAsset;sp.texture = texturespire.spriteFrame = sp;})}
}
脚本编写完成后,构建发布微信小游戏,构建完成后,通过运行打开微信开发者工具。效果图如下:

点击授权,选择同意

获取昵称,头像权限,选择允许

最终的效果:

注意事项
上面所讲的主要内容是关于wx API在cocosCreator中如何使用,针对于示例有几点需要说明下:
- 微信小游戏通过
wx.createUserInfoButton首次授权成功后,就不需要再次调用授权了。即使用户修改了个人信息相关,获取最新的消息通过wx.getUserInfo即可。
-
如果考虑第一点的情况,测试的时候想取消授权,可在微信开发者工具点击:右上方… -> 设置 --> 用户信息开关关闭即可,重新进行授权调试

-
用户头像的url获取成功,但显示不出来,类似报错提示: 不在以下request 合法域名表中 , 针对于测试项目的解决方案:
- 打开mp.weixin.qq.com 开发后台
- 选择左侧的开发管理,然后开发设置 -> 服务器域名 ,点击开始配置

主要配置如下:

然后保存提交。
再打开微信开发者工具,如下图所示:

注意:此种配置仅针对于测试项目,如果是正式的项目,请更换正式域名即可。
至此文章结束,感谢小伙伴的热心分享:
CSDN 军大君关于用户授权按钮的分享
最后,祝大家学习生活愉快!
相关文章:
cocosCreator 之 微信小游戏授权设置和调用wxAPI获取用户信息
版本: 3.8.0 语言: TypeScript 环境: Mac 官方文档: 微信官方文档 - 开放能力 微信 API 小游戏环境 在cocosCreator的3.x版本项目开发中,TypeScript最终会被转换为JavaScript语言。 JavaScript的运行时调用的API…...
element ui el-table表格纵向横向滚动条去除并隐藏空白占位列
需求 当table内容列过多时,可通过height属性设置table高度以固定table高度、固定表头,使table内容可以滚动 现在需求是右侧滚动条不好看,需要去除滚动条,并隐藏滚动条所占列的位置 // ----------修改elementui表格的默认样式-…...
防止python进程重复执行
前言 通过保存的进程pid查询上次执行的进程是否退出,决定是否启动新的python进程 代码 pidOption.py import os import psutil pidPath = "saveFile.pid"#写入进程号 def writePid():pid = str(os.getpid())f = open(pidPath, w)f.write(pid...
LV.12 D13 C工程与寄存器封装 学习笔记
一、C语言工程简介 把模板在linux解压出来 代码写在interface.c就可以了。 map.lds是链接脚本文件(负责代码的排布) include中是头文件,src中是写好的源代码 start.s是启动代码,在interface.c之前运行,把cpu和栈做一…...
Java SE 学习笔记(十九)—— XML、设计模式
目录 1 XML1.1 XML 概述1.2 XML 语法规则1.3 XML 文档约束(了解)1.3.1 DTD 约束1.3.2 schema 约束 2 XML 解析2.1 XML 解析概述2.2 Dom4J 解析 XML 文件2.3 XML 解析案例 3 XML 检索4 设计模式4.1 工厂模式4.2 装饰模式 1 XML 在有些业务场景下ÿ…...
grafana InfluxDB returned error: error reading influxDB 400错误解决
问题: 如图提示错误解决 确认自己的docker容器是否配置了以下3个字段 DOCKER_INFLUXDB_INIT_USERNAMExxx DOCKER_INFLUXDB_INIT_PASSWORDyyy DOCKER_INFLUXDB_INIT_ADMIN_TOKENzzz 如果有,在grafana中需要添加header配置Header: Authorization , Value…...
【LeetCode:150. 逆波兰表达式求值 | 栈】
🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...
什么是神经网络,它的原理是啥?(2)
参考:https://www.youtube.com/watch?vmlk0rddP3L4&listPLuhqtP7jdD8CftMk831qdE8BlIteSaNzD 视频3:什么是激活函数?为什么我们需要激活函数?它的类型有哪些? 为什么需要激活函数?如果没有激活函数&…...
leetcode做题笔记206. 反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出:[2,1]示例 3: 输入&am…...
2023/10/31 JAVA学习
idea一般会自动帮我们导包 new string创建出的字符串是空的,可以对其进行新赋值 s[i]在Java字符串中是没有这个东西的,想要遍历字符串只能用下面这种方式 但是可以把字符串,转换为字符数组然后那样输出 java中是无法s1 s2这样比较字符串的,因为这样比较的是地址,如果是new创建…...
SurfaceFliger绘制流程
前景提要: 当HWComposer接收到Vsync信号时,唤醒DisSync线程,在其中唤醒EventThread线程,调用DisplayEventReceiver的sendObjects像BitTub发送消息,由于在SurfaceFlinger的init过程中创建了EventThread线程,…...
系统架构设计师-第14章-云原生架构设计理论与实践-
云原生架构产生背景 云原生与商业场景的深度融合 ( 1 )从为企业带来的价值来看,云原生架构有着以下优势通过对多元算力的支持,满足不同应用场景的个性化算力需求,井基于软硬协同架构,为应用提供极致性能的云原生算力 (2) 通过最…...
conda 实践
1. 环境部署 1.1. 下载 anaconda 安装包 下面这个网址查找自己需要的版本 https://repo.anaconda.com/archive/ 或者手动下载。 wget https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh 1.2. 执行安装程序 #安装依赖: sudo yum install bzip2…...
行业追踪,2023-10-31
自动复盘 2023-10-31 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…...
springboot 配置多个Redis数据源详解
实现原理 需要配置好两个数据源,创建两个RedisTemplate在配置类中注入两个RedisConnectionFactory,分别创建对应的RedisTemplate进行操作 详解 配置数据源 我这里是在之前已有一个配置下面另外加了一个 spring:redis:# 地址host: localh…...
【数据结构】排序算法总结
⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈数据结构 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 总结 1. 归并排序2. 计数排序3. 排序…...
作为20年老程序员,我如何使用GPT4来帮我写代码
如果你还在用google寻找解决代码bug的方案,那你真的out了,试试gpt4, save my life. 不是小编危言耸听,最近用gpt4来写代码极大地提高了代码生产力和运行效率,今天特地跟大家分享一下。 https://www.promptspower.comhttps://www.…...
【机器学习合集】模型设计之残差网络 ->(个人学习记录笔记)
文章目录 模型设计之残差网络1. 什么是残差结构1.1 网络加深遇到的优化问题1.2 short connect技术 2. 残差网络及有效性理解2.1 残差网络 3. 残差网络的发展3.1 密集残差网络3.2 更宽的残差网络(wide resnet)3.3 分组残差网络3.4 Dual Path Network3.5 加权残差网络3.6 预激活残…...
GoLong的学习之路(十六)基础工具之Gin框架
Gin框架介绍及使用,这张不用看内容就知道非常重要,重要到什么地步呢?重要到开发java不会Spring全家桶这种概念。 上几篇文章写的是如何构建骨架,经脉。这一章是将血肉注入。 文章目录 Gin框架RESTful API Gin渲染HTML渲染静态文件…...
VMware打开centos黑屏解决方法汇总
VMware打开centos黑屏解决方法汇总 前言:一. VMware打开centos黑屏解决方法汇总一 .情况情况一:情况二情况三 二. 解决方法最简单的方法:一. 以管理员权限在命令行执行1. 管理员身份运行cmd2. 输入“netsh winsock reset”,回车3. 重启电脑即…...
Transformer时代回头看:Layer Norm为何成了BERT、GPT的“标配”组件?
Transformer时代回头看:Layer Norm为何成了BERT、GPT的“标配”组件? 在2017年Transformer架构横空出世之前,深度学习领域已经见证了批量归一化(Batch Normalization)在计算机视觉任务中的巨大成功。然而当Transformer…...
YOLO模型如何训练救生衣检测数据集深度学习如何训练救生衣检测数据集
救生衣检测模型YOLO8-300n 提供训练好的模型文件(pt格式)、过程文件和验证图片,带对应的训练数据集10000张 1 111一、救生衣检测模型(YOLOv8-300n)完整方案1. 模型与数据集信息项目详情模型版本YOLOv8n(300…...
从BadApple到像素艺术:0.96寸OLED上的微型视频播放器全栈实现
1. 从网络热梗到硬件实现:BadApple的像素之旅 第一次看到BadApple在0.96寸OLED上流畅播放时,我整个人都惊呆了。这个源自东方Project的经典黑白剪影动画,居然能在比硬币还小的屏幕上完美还原。你可能在B站看过各种版本的BadApple,…...
OpenClaw用户指南,如何正确配置Taotoken作为其大模型供应商
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 OpenClaw用户指南,如何正确配置Taotoken作为其大模型供应商 对于使用OpenClaw这类Agent框架的开发者来说,接…...
STM32与PS2手柄的无线交互:从硬件对接到按键解析
1. 认识PS2手柄与STM32的无线交互 第一次接触PS2手柄和STM32的对接时,我完全被这个经典游戏手柄的通信协议吸引了。你可能不知道,这个2000年推出的手柄至今仍在嵌入式领域发光发热,主要得益于它简单的通信协议和稳定的性能。我实测过市面上常…...
番茄小说下载器终极指南:5种格式+Web界面打造个人数字图书馆
番茄小说下载器终极指南:5种格式Web界面打造个人数字图书馆 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 你是否曾在深夜追更时,突然发现心爱的小说被平台下架&am…...
告别双系统!用WSL2+Ubuntu20.04+ROS Noetic玩转AirSim仿真(保姆级避坑指南)
告别双系统!用WSL2Ubuntu20.04ROS Noetic玩转AirSim仿真(保姆级避坑指南) 在机器人开发与自动驾驶仿真领域,AirSim与ROS的结合堪称黄金搭档——前者提供高保真物理引擎与视觉渲染,后者则是机器人算法开发的行业标准。…...
【Nginx】Nginx index 指令全解:从首页加载失败到高性能目录服务的生产实践
Nginx index 指令全解:从首页加载失败到高性能目录服务的生产实践 本文面向已部署过简单 Nginx 服务、了解反向代理概念,但尚未系统掌握其静态文件目录索引与默认首页机制的中高级工程师。我们将彻底拆解 index 指令的工作原理、继承规则、与 try_files 的协作边界,揭示为何…...
卡梅德生物技术快报|单 B 细胞抗体制备:流程优化、表达系统适配与性能数据
正文单克隆抗体制备是生物医学与兽医领域的核心技术。单 B 细胞抗体制备作为新一代技术,在筛选效率、基因天然性、制备周期上优势显著。本文从研发视角,按提出问题 — 分析问题 — 解决问题 — 效果数据,系统阐述单 B 细胞抗体制备的技术细节…...
光子量子计算编译优化技术与自适应框架设计
1. 光子量子计算编译技术概述光子量子计算作为量子计算的重要实现路径之一,其独特的室温运行特性和优异的光子传输性能使其在分布式量子计算领域具有天然优势。在测量基量子计算(MBQC)范式中,量子计算过程被转化为对特定纠缠态&am…...
