1.1.1.登录与鉴权
优质
小牛编辑
131浏览
2023-12-01
游戏加载流程
游戏加载主要分为两个阶段,准备阶段是由手Q进行,开发者无需理会,执行阶段为开发者可控制的阶段。
引擎启动后,会从手Q和后台中获取当前游戏id(gameId),用户id(openId)等信息,并将这些参数写入到js引擎的全局变量GameStatusInfo中,并执行游戏对应的main.js文件。开发可从该参数中获取相关的游戏变量。
鉴权概念
- 对于自建后台的QQ轻游戏开发者而言,有一个openKey的概念,此openkey是每个用户不同的,并非每个游戏都是唯一的。通过传递此参数,客户端和服务器端都可以向QQ轻游戏后台对该用户的身份进行校验,确认其为合法的手Q用户
重要概念
GameStatusInfo
有关游戏的全局变量,类似于H5中windows对象。
openId:
用户的唯一标识
gameId
游戏的唯一标识
openKey
用户自建服务器鉴权密钥。传输数据时带给后台,通过校验openkey,确保接口调用方确定为手Q用户
全局变量GameStatusInfo
游戏启动后,引擎会为开发者写入名为GameStatusInfo的有关游戏的全局参数,从中可获取有关用户标识符、机型、等参数
具体格式如下:
变量 | 类型 | 名称 | 备注 |
---|---|---|---|
gameId | number | 游戏id | 游戏的唯一标识 |
isMaster | number | 是否是房主 | 1为房主,0为参加者 |
roomId | number | 房间号 | 房主时为0,参加者时为具体房间号 |
gameVersion | string | 游戏版本号 | 与游戏包强绑定的版本号。手Q测依赖此进行版本更新 |
platform | string | 平台类型 | 取值为 "ios"或"android" |
openId | string | 当前用户的标识 | 用户的唯一标识 |
QQVer | string | 手机qq版本 | 形如"7.1.0.0" |
isFirstInstall | number | 是否首次安装 | 1为首次安装 0非首次安装 |
isFirstPlay | number | 是否第一次打开 | 1为第一次玩游戏 0非第一次。使用BK.Room的成员函数startGame后,置为0 |
networkType | number | 网络类型 | 游戏启动时的网络类型。 1 电信 ,2 联通 ,3 移动 0: wifi或未知 |
src | number | 游戏启动入口 | 100:实时PK,200:聊天窗游戏消息 |
spriteDesignHeight | number | 厘米秀小人spine动画的设计高度 | 点击查看厘米秀骨骼动画章节 |
skltPath | Object | 厘米秀小人spine骨骼 | 点击查看厘米秀骨骼动画章节 |
dressPath | Array | 厘米秀衣服路径 | 点击查看厘米秀骨骼动画章节 |
sex | number | 性别 | 1 男 2 女 |
osVersion | string | 操作系统版本 | 例如"11.3" 表示iOS 11.3 |
gameParam | string | 扩展参数 | 当使用其他玩家使用BK.QQ.shareToArk分享至手Q,并且填充扩展字段时,当前玩家就能从此处获取该数据。 详情 |
aioType | number | 当前聊天窗类型 | 1.双人聊天 4.群 5.讨论组 |
gameType | number | 游戏类型 | (手Q7.6.5及以上支持) 0: 普通游戏 1:红包游戏 |
connType | number | 网络连接类型 | (手Q7.6.5及以上支持),unknown:-1, no:0, wifi:1, 2G:2, 3G:3, 4G:4, CABLE:5 |
accessTokenCode | number | 访问密钥码 | (手Q7.6.5及以上支持) 用于开发者自建服务器与腾讯服务器进行鉴权服务 0 :老游戏不需要这个字段, 1:获取成功, 2:获取失败 |
accessToken | string | 访问密钥 | (手Q7.6.5及以上支持) 用于开发者自建服务器与腾讯服务器进行鉴权服务 |
commFlagBits | number | 游戏控制位 | (手Q7.7.0及以上支持) |
networkType | number | 运营商 | (手Q7.6.5及以上支持) 1 电信 2 联通 3 移动 |
model | string | 具体机型 | (手Q7.6.3及以上支持) 形如 "PRO 6 Plus" |
示例代码:
var openId = GameStatusInfo.openId; //获取当前用户的唯一标识
获取openKey
GameStatusInfo中无openKey参数,使用如下例子可获取。
BK.Script.loadlib("GameRes://qqPlayCore.js") //预加载bricks js层接口
BK.QQ.fetchOpenKey(function (errCode, cmd, data) {
if (errCode == 0) {
var openKey = data.openKey;
}
});