1.1.1.登录与鉴权

优质
小牛编辑
125浏览
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的有关游戏的全局参数,从中可获取有关用户标识符、机型、等参数

具体格式如下:

变量类型名称备注
gameIdnumber游戏id游戏的唯一标识
isMasternumber是否是房主1为房主,0为参加者
roomIdnumber房间号房主时为0,参加者时为具体房间号
gameVersionstring游戏版本号与游戏包强绑定的版本号。手Q测依赖此进行版本更新
platformstring平台类型取值为 "ios"或"android"
openIdstring当前用户的标识用户的唯一标识
QQVerstring手机qq版本形如"7.1.0.0"
isFirstInstallnumber是否首次安装1为首次安装 0非首次安装
isFirstPlaynumber是否第一次打开1为第一次玩游戏 0非第一次。使用BK.Room的成员函数startGame后,置为0
networkTypenumber网络类型游戏启动时的网络类型。 1 电信 ,2 联通 ,3 移动 0: wifi或未知
srcnumber游戏启动入口100:实时PK,200:聊天窗游戏消息
spriteDesignHeightnumber厘米秀小人spine动画的设计高度点击查看厘米秀骨骼动画章节
skltPathObject厘米秀小人spine骨骼点击查看厘米秀骨骼动画章节
dressPathArray厘米秀衣服路径点击查看厘米秀骨骼动画章节
sexnumber性别1 男 2 女
osVersionstring操作系统版本例如"11.3" 表示iOS 11.3
gameParamstring扩展参数当使用其他玩家使用BK.QQ.shareToArk分享至手Q,并且填充扩展字段时,当前玩家就能从此处获取该数据。 详情
aioTypenumber当前聊天窗类型1.双人聊天 4.群 5.讨论组
gameTypenumber游戏类型(手Q7.6.5及以上支持) 0: 普通游戏 1:红包游戏
connTypenumber网络连接类型(手Q7.6.5及以上支持),unknown:-1, no:0, wifi:1, 2G:2, 3G:3, 4G:4, CABLE:5
accessTokenCodenumber访问密钥码(手Q7.6.5及以上支持) 用于开发者自建服务器与腾讯服务器进行鉴权服务 0 :老游戏不需要这个字段, 1:获取成功, 2:获取失败
accessTokenstring访问密钥(手Q7.6.5及以上支持) 用于开发者自建服务器与腾讯服务器进行鉴权服务
commFlagBitsnumber游戏控制位(手Q7.7.0及以上支持)
networkTypenumber运营商(手Q7.6.5及以上支持) 1 电信 2 联通 3 移动
modelstring具体机型(手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;
     }
});