登录与鉴权

游戏加载流程

游戏加载主要分为两个阶段,准备阶段是由手Q进行,开发者无需理会,执行阶段为开发者可控制的阶段。

引擎启动后,会从手Q和后台中获取当前游戏id(gameId),用户id(openId)等信息,并将这些参数写入到js引擎的全局变量GameStatusInfo中,并执行游戏对应的main.js文件。开发可从该参数中获取相关的游戏变量。 1.1.1.登录与鉴权  - 图1

鉴权概念

  • 对于自建后台的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"

示例代码:

  1. var openId = GameStatusInfo.openId; //获取当前用户的唯一标识

获取openKey

GameStatusInfo中无openKey参数,使用如下例子可获取。

  1. BK.Script.loadlib("GameRes://qqPlayCore.js") //预加载bricks js层接口
  2. BK.QQ.fetchOpenKey(function (errCode, cmd, data) {
  3. if (errCode == 0) {
  4. var openKey = data.openKey;
  5. }
  6. });

原文: https://hudong.qq.com/docs/engine/engine/native/login/intro.html