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提供的绘制、音视频、网络和文件等能力,实现游戏的运行。

n

在cocosCreator的项目开发中,我们可以通过调用 wx API的接口,来实现微信的登录、用户信息的获取、支付、分享朋友圈等功能。

本篇文章面向用户群体是使用cocosCreator做微信小游戏开发的小白群体,大神可以略过。

如果编写有不当之处,欢迎您的指出。



授权设置


通过 wx API相关接口获取用户的信息,需要用户授权同意,我们才能获取。

微信平台为了保障用户的合法权益和规范开发者对用户个人信息的处理行为,开发者需要在微信后台配置:

  • 用户隐私保护指引 也就是用户协议,告知用户开发者会获取那些权限等
  • 隐私授权弹窗 用于告知用户能否授权
    请添加图片描述

大致的步骤:

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

请添加图片描述

  1. 填写用户隐私保护指引设置
    请添加图片描述

  2. 可通过增加信息类型 选择用户信息类型:
    请添加图片描述

  3. 填写信息完毕后,可确定并生成协议

  4. 返回基本设置页面 后, 可打开服务内容声明 --> 隐私授权下的 设置,注意标记部分即可
    请添加图片描述

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

更多详情内容可参考:

微信小游戏文档 小游戏隐私合规开发指南

微信开发社区 小游戏《用户隐私保护指引》



cocosCreator调用wxAPI接口


在cocosCreator的脚本中调用 wx API接口,需要注意:

  1. 实现的功能,使用浏览器调试是无效的。因为微信小游戏的运行是不同于浏览器的, 可以打包后通过微信开发者工具运行调试
  2. Creator没有wx API接口的定义文件,因此脚本中编写wx都会报错

针对于第2种,可通过NPM下载 wx API 的类型定义文件,以帮助我们调用方法时,有智能提示。

具体步骤:

  1. 打开终端命令,进入指定的项目目录内
  2. 运行命令:npm install miniprogram-api-typings
  3. 下载成功后,会放在项目目录的 ./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中如何使用,针对于示例有几点需要说明下:

  1. 微信小游戏通过wx.createUserInfoButton首次授权成功后,就不需要再次调用授权了。即使用户修改了个人信息相关,获取最新的消息通过wx.getUserInfo即可。

  1. 如果考虑第一点的情况,测试的时候想取消授权,可在微信开发者工具点击:右上方… -> 设置 --> 用户信息开关关闭即可,重新进行授权调试
    请添加图片描述

  2. 用户头像的url获取成功,但显示不出来,类似报错提示: 不在以下request 合法域名表中 , 针对于测试项目的解决方案:

  • 打开mp.weixin.qq.com 开发后台
  • 选择左侧的开发管理,然后开发设置 -> 服务器域名 ,点击开始配置

请添加图片描述

主要配置如下:

请添加图片描述

然后保存提交。

再打开微信开发者工具,如下图所示:

请添加图片描述

注意:此种配置仅针对于测试项目,如果是正式的项目,请更换正式域名即可。

至此文章结束,感谢小伙伴的热心分享:

CSDN 军大君关于用户授权按钮的分享

最后,祝大家学习生活愉快!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/177184.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言从入门到实战——函数

函数 前言1. 函数的概念2. 库函数2.1 标准库和头⽂件2.2 库函数的使用方法2.2.1 功能2.2.2 头文件包含2.2.3 实践2.2.4 库函数文档的一般格式 3. 自定义函数3.1 函数的语法形式3.2 函数的举例 4. 形参和实参4.1 实参4.2 形参4.3 实参和形参的关系 5. return 语句6. 数组做函数参…

基于jsp,ssm物流快递管理系统

开发工具&#xff1a;eclipse&#xff0c;jdk1.8 服务器&#xff1a;tomcat7.0 数据库&#xff1a;mysql5.7 技术&#xff1a; springspringMVCmybaitsEasyUI 项目包括用户前台和管理后台两部分&#xff0c;功能介绍如下&#xff1a; 一、用户(前台)功能&#xff1a; 用…

【嵌入式】HC32F07X CAN通讯配置和使用配置不同缓冲器以连续发送

一 背景说明 使用小华&#xff08;华大&#xff09;的MCU HC32F07X实现 CAN 通讯配置和使用 二 原理分析 【1】CAN原理说明&#xff08;参考文章《CAN通信详解》&#xff09;&#xff1a; CAN是控制器局域网络(Controller Area Network, CAN)的简称&#xff0c;是一种能够实现…

Linux中正则表达式等

grep命令&#xff1a;主要作用就是过滤查找文本内容 常用的选项有&#xff1a; -m 数字:匹配几次之后停止&#xff0c;按行匹配&#xff0c;不是按字符个数&#xff0c;例如 -v:取反 例如: -n:显示匹配的行号 例如&#xff1a; -c:仅显示匹配的行数&#xff0c;不显示匹配内…

vue-安装Vue开发者工具

极简插件&#xff1a;下载->开发者模式->拖曳安装->插件详情允许访问文件 网址&#xff1a;https://chrome.zzzmh.cn/index 搜索Vue Devtools 下载下来的安装包先解压 然后点击chrome浏览器的右上角三个点的按钮在里面找到扩展程序这个选项&#xff0c;然后点进去管理…

pycharm使用ssh连接远程jupyter

1. 安装jupyter pip install jupyter2. 生成jupyter_notebook_config.py文件 jupyter notebook --generate-config3. 设置命令参数 jupyter notebook --no-browser --allow-root --port 8900配置Jupyter服务器 将上面的代码复制到命令行实参中&#xff1a;

Qwt 使用QwtDial绘制汽车仪表盘

1.概述 QwtDial是Qwt库中的一个类&#xff0c;用于绘制一个可旋转的仪表盘。 以下是类继承关系&#xff1a; 2.常用方法 void setOrigin(double origin) 设置仪表盘的原点角度&#xff0c;以度为单位&#xff0c;默认为0度&#xff0c;正值为逆时针旋转&#xff0c;负值为顺时…

腾讯云轻量服务器“镜像类型”以及“镜像”选择方法

腾讯云轻量应用服务器镜像类型分为应用镜像、系统镜像、Docker基础镜像、自定义镜像和共享镜像&#xff0c;腾讯云百科txybk.com来详细说下不同镜像类型说明和详细介绍&#xff1a; 轻量应用服务器镜像类型说明 腾讯云轻量应用服务器 应用镜像&#xff1a;独有的应用镜像除了包…

Linux shell编程学习笔记17:for循环语句

Linux Shell 脚本编程和其他编程语言一样&#xff0c;支持算数、关系、布尔、字符串、文件测试等多种运算&#xff0c;同样也需要进行根据条件进行流程控制&#xff0c;提供了if、for、while、until等语句。 之前我们探讨了if语句&#xff0c;现在我们来探讨for循环语句。 Li…

什么是数字展览馆,数字展览馆有什么应用前景

引言&#xff1a; 数字展览馆作为一种新兴的文化艺术展示形式&#xff0c;以数字化技术和虚拟现实为基础&#xff0c;正在逐渐改变传统展览的方式。 一、什么是数字展览馆&#xff1f; 1.定义 数字展览馆是利用数字技术和虚拟现实技术打造的一种线上文化艺术展示平台。通过虚…

【网络协议】聊聊HTTPS协议

前面的文章&#xff0c;我们描述了网络是怎样进行传输数据包的&#xff0c;但是网络是不安全的&#xff0c;对于这种流量门户网站其实还好&#xff0c;对于支付类场景其实容易将数据泄漏&#xff0c;所以安全的方式是通过加密&#xff0c;加密方式主要是对称加密和非对称加密。…

git简单介绍,回车换行问题,倒计时+进度条小程序的实现+代码

目录 git--版本控制工具 介绍 使用 小程序 引入 回车换行问题 缓冲区问题 倒计时 分析 代码 进度条 分析 代码 git--版本控制工具 首先,我们需要下载git : yum install git 介绍 Git是一种分布式版本控制系统&#xff0c;用于跟踪文件和目录的变化并协调多个人之…

常用 sqlite3 命令

本次将向您讲解 SQLite 编程人员所使用的简单却有用的命令。这些命令被称为 SQLite 的点命令&#xff0c;这些命令的不同之处在于它们不以分号 ; 结束。 让我们在命令提示符下键入一个简单的 sqlite3 命令&#xff0c;在 SQLite 命令提示符下&#xff0c;您可以使 用各种 …

新晋“断货王”!西圣Olite开放式耳机掀起抢购热潮,双十一首日售罄!

在双十一首日&#xff0c;西圣olite开放式耳机凭借其超高性价比&#xff0c;一举拿下“断货王”称号&#xff0c;在双十一首日已售罄&#xff0c;现在在各大电商平台均显示无货。 这一消息引起了社交媒体的热议&#xff0c;除了其超高性价比&#xff0c;性能可以媲美千元级别耳…

操作系统 day02(特征和发展历程)

一&#xff0c;操作系统的特征 并发和并行 共享 并发和共享互为存在条件 虚拟 异步 综上所述&#xff1a; 二&#xff0c;操作系统的发展历程

使用Ansible中的playbook

目录 1.Playbook的功能 2.YAML 3.YAML列表 4.YAML的字典 5.playbook执行命令 6.playbook的核心组件 7.vim 设定技巧 示例 1.Playbook的功能 playbook 是由一个或多个play组成的列表 Playboot 文件使用YAML来写的 2.YAML #简介# 是一种表达资料序列的格式,类似XML #特…

阿里云无影升级2.0 云电脑解决方案时代到来

10月31日&#xff0c;杭州云栖大会上&#xff0c;阿里云宣布无影全新升级2.0&#xff1a;从云电脑到云上解决方案&#xff0c;帮助中小企业更便捷地构建云上办公&#xff0c;并开放无影产品及解决方案能力&#xff0c;为生态合作伙伴提供企业云平台&#xff0c;帮助其打造定制化…

Mozilla Firefox 119 现已可供下载

Mozilla Firefox 119 开源网络浏览器现在可以下载了&#xff0c;是时候先看看它的新功能和改进了。 Firefox 119 改进了 Firefox View 功能&#xff0c;现在可以提供更多内容&#xff0c;如最近关闭的标签页和浏览历史&#xff0c;你可以按日期或网站排序&#xff0c;还支持查…

【设计模式】第24节:行为型模式之“模板方法模式”

一、简介 模板方法模式在一个方法中定义一个算法骨架&#xff0c;并将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法整体结构的情况下&#xff0c;重新定义算法中的某些步骤。 模板模式有两大作用&#xff1a;复用和扩展。其中&#xff0c;复用指的是&#…

10.31日模拟赛总结

文章目录 考试时间及策略考试结果考试反思题解A.进步科学B.吉吉没急C.老杰克哒D.季积晓淆 考试时间及策略 没啥好说的&#xff0c;因为好像都不会。所以全场感觉都在罚坐&#xff0c;很痛苦。 考试结果 30 0 50 5 85 考试反思 T1&#xff1a;T1是个神奇状压&#xff0…