下载文档

最后更新时间: 2021-08-02 05:23:05 PM

游戏登录

文档说明

本文档为手游接入登录模块提供指引,游戏登录是玩家在GTarcade平台进入游戏服务器的唯一入口。

前端接入

进游戏

主要是为了拉起游戏进程,给游戏方传输相关的参数

  • 游戏接入前需要在游戏中心提前配置,可以联系微端运营同学帮忙配置。

通信方式: 启动游戏进程微端传给游戏前端的参数 参数内容:

参数名 必选 类型 说明
account Str 账号
g_id Str 游戏 ID
s_id Str 服务器 ID
op_id Str 渠道 ID
port_id Str 端口号
LanguageType Str 语言类型
other Str 如果游戏放需要更多参数,可根据需求补充

语言对应字段

	zh_CN=简体中文
	zh_TW=繁体中文
	ar=阿拉伯语
	es=西班牙语
	en=英语
	id=印尼语
	it=意大利语
	de=德语
	pl=波兰语
	th=泰语
	tr=土耳其语
	ru=俄语
	pt=葡萄牙语
	fr=法语
	jp=日语
	kr=朝鲜语、韩语
	vi=越南语
  • 登录进游戏流程如下


关联请求

主要是为了微端精准的识别每一个游戏,防止用户在平台打开多个游戏时,相互之间的通信不会出现错误

通信方式: 游戏传给微端的参数(TCP) 加密方式: AES 数据格式: JSON 参数内容:

参数名 必选 类型 说明
account Str 账号
g_id Str 游戏 ID
s_id Str 服务器 ID
op_id Str 渠道 ID
msg_id Str 本地通信的消息 ID,用于分辨每次通信接口,写死9


游戏登录

游戏登录成功后,游戏返回的状态,是为了微端本地记录游戏的状态,方便管理游戏

通信方式: 微端发送给游戏的(TCP) 加密方式: AES 数据格式: JSON 参数内容:

参数名 必选 类型 说明
gta_id Str 每次启动 gta 的唯一 ID
client_id Str 每一个游戏分配的通信 ID
msg_id Str 本地通信的消息 ID,用于分辨每次通信接口,写死1
code Str 登录状态

返回结果

	{
		errcode: 1, // 0 表示登录成功,其他表示登录失败,并在 msg中返回登录失败详细原因
		msg: "获取成功", // 成功、失败信息
		data:[{
				"account": "帐号", // 帐号
				"g_id": 9, // 游戏 ID
				"s_id": "1308440003", // 服务器ID
				"op_id": 503, // 渠道 ID
				"gta_id": "1212",// 每次启动 gta的唯一 ID
				"client_id": "1", // 每一个游戏分配的通信 ID
				"msg_id": "1" //本地通信的消息 ID,用于分辨每次通信接口,写死1
		}]
	}


后端接入

简要描述:

  • 微端游戏登录【手游】- 面向研发侧文档

返回示例

由微端客户端请求并透传该返回值给游戏客户端,游戏客户端在登入游戏服之前进行二次校验,校验后以此account登入游戏服

  {
	code: 0, 
	message: "success",
	data: {
		account: "0060015_1603261287587442417267131", //平台用户账号, 游戏方以此账号为准,登入游戏,跟supersdk登入账号保持一致
		game_id: 182,//游戏id
		game_name: "legacy of discord", //游戏名
		type: "micro",//游戏接入类型
		time: 1608621455,//当前服务器时间戳
		sign: "16f08edd1d703dcd16b52736d5215002",//校验签名,只有game_data字段不参与签名生成,其它返回的参数均参与签名,返回字段数不固定
		game_data: {
			ip: "61.174.15.246", //客户端ip
			country_code: "CN", //国家
			continent_code: "AP", //地区
			osdk_ticket: "eyJvc2RrX2dhbWVfaWQiOjQwOCwidXNlcl9pZCI6InZ4eXdhbmdAZ21haWwuY29tIiwibG9naW5fc2RrX25hbWUiOiJtaWNybyIsImFjY291bnRfc3lzdGVtX2lkIjoiMDA2MDAxNSIsIm9zZGtfdXNlcl9pZCI6IjAwNjAwMTVfdnh5d2FuZ0BnbWFpbC5jb20iLCJjaGFubmVsX2lkIjoyNzI4LCJleHRlbmQiOiIiLCJ0aW1lIjoxNjI1NDcyODM1LCJpcCI6IjYxLjE3NC4xNS4yNDYiLCJzaWduIjoiMWJmMDFmNGJiZTE1ZDQ0MzAzOTEzMjhlNTgyOTBkYTcifQ=="  //兼容supersdk ticket
			}//如有特殊需求可使用透传参数
	}
}

数据有效性校验

校验支持2种方式,2选1:

方式1:
校验sign,只有game_data字段不参与签名生成,其它返回的参数均参与签名,返回字段数不固定 加密方式:

public static function genVerify($data, $signKey)
{
    ksort($data);
    $items = array();
    foreach ($data as $key => $value) {
        $items[] = $key . "=" . $value;
    }
    return md5(join("&", $items) . $signKey);
}

通过以上加密函数,跟返回结果中的sign进行对比,一致则通过校验,加密$signKey在接入之前单独申请, 每个游戏单独生成, 登录账号采用account字段值;

方式2: 如已接入supersdk,可校验game_data里的osdk_ticket ,生成和解析规则通supersdk,请参考supersdk 文档-osdk_ticket 解析算法: SuperSDK服务端接口文档 私钥由微端侧分配,接入前先找微端开发申请获取私钥,登录账号使用经解密算法校验通过后的得到的osdk_user_id值;

接口实效性: 接口信息有效性,建议5min以内

返回参数说明

参数名 类型 说明
code int 0,成功,其它失败
msg string 返回状态
data array 返回数据