自建后台开发指引
开发者使用自建服务器作为后台时,有两部分工作。
客户端
使用引擎接口提供的网络接口与自建服务器进行通信。
使用引擎接口BK.QQ.shareToArk模拟房间逻辑,以达到其他人能加入房间的功能
服务器
游戏本身业务逻辑
对请求者进行校验,确保调用方为手Q
服务器测进行拉取道具,消耗道具,赠送道具等操作
自建后台服务器架构
开发者自建后台支持以下三种方式与自建后台服务器进行通信
因开发者使用自建后台形式游戏业务逻辑通信,存在非法玩家伪造请求与三方自建后台进行交互。因此开发者需要对调用方进行校验。校验方法查看鉴权接口
道具接口
自建后台支持与QQ轻游戏道具服务进行道具的拉取,消耗,赠送操作具体方法查看道具管理接口
调用道具、鉴权接口方法
如何获取APPID和APPKEY
开发者在调用道具管理接口和鉴权接口接口时,需要使用APPID和APPKEY做签名,保证调用方确实为开发者。
APPID、APPKEY与游戏一一对应,可以通过如下方法查看和设置
- 登陆https://hudong.qq.com/
- 点击顶部菜单栏的“游戏管理”
- 点击左上角下拉菜单选择游戏
- 点击左边导航栏的“设置项目”
- 点击右边页面中选择“开发设置”,可查询APP ID
- 点击appkey后的“设置”按钮,可编辑APPKEY
如何获取openId和openKey
开发者通过Bricks引擎全局变量GameStatusInfo.openId可以获取当前手Q用户的openId
开发者通过Bricks引擎的BK.QQ.fetchOpenKey接口和openKey,用于用户身份鉴权。
BK.QQ.fetchOpenKey(function (errCode, cmd, data) {
if (errCode == 0) {
var openKey = data.openKey;
}
});
开发者自建后台可以通过鉴权接口接口验证OPENID和OPENKEY是否合法。
需要注意的是,只有配置了needOpenkey授权的游戏,方可调用BK.QQ.fetchOpenKey接口获取有效的OPENID和OPENKEY。具体配置请参考游戏上架章节中,关于config.json-needOpenkey字段的配置说明。
Bricks引擎HTTP请求的参考样例
/**
* Bricks引擎
*
* http Demo
*/
//1.简单的http get请求
function onResponseImage(res, code) {
var resPicTexture = BK.Texture.createTextureWithBuffer(res);
var icon = new BK.Sprite(279, 132, resPicTexture, 0, 1, 1, 1);
icon.position = { x: BK.Director.screenPixelSize.width / 2.0, y: BK.Director.screenPixelSize.height / 2.0 };
icon.anchor = { x: 0.5, y: 0.5 };
BK.Director.root.addChild(icon);
}
var httpimagreq = new BK.HttpUtil("https://sqimg.qq.com/qq_product_operations/im/qqlogo/imlogo_b.png");
httpimagreq.setHttpMethod("get");
httpimagreq.requestAsync(onResponseImage);
//2.post请求1
var httppost1 = new BK.HttpUtil("http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx");
httppost1.setHttpMethod("post")
httppost1.setHttpPostData("date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213")
//设置referer,cookie
httppost1.setHttpReferer("http://hlddz.huanle.qq.com");
httppost1.setHttpCookie("cookie1=value1; cookie2=value2; cookie3=value3;");
httppost1.requestAsync(onResponse);
//3.post请求2
var httppost2 = new BK.HttpUtil("http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx");
httppost2.setHttpMethod("post")
httppost2.setHttpPostData("date=201311299&startRecorda=1&lena=5&udida=1234567890&terminalType=Iphone&cid=213")
//设置referer,cookie
httppost2.setHttpReferer("www.abc.com");
httppost2.setHttpCookie("cookie1=value1; cookie2=value2; cookie3=value3;");
httppost2.requestAsync(onResponse);
原文: https://hudong.qq.com/docs/engine/server/thrid/intro.html