跳转至

游戏登录信息验证

此过程是游戏客户端获取到SDK客户端返回的登录成功信息后,将信息发给游戏服务端进行验证,验证成功,玩家登录完成。

登录整体流程

登录信息验证示例代码

以下代码作为上面流程图中的步骤5、6的参考

// 配置在服务端
$instanceSecret = 'a5e283b0b4267f3dc9c36203eaf88cae';

// 客户端传递的SDK生成的sign参数
$sdkSign = '4dc1fbf04414e675137e095e5ab22149';

// 客户端传递的SDK参数 
$params['instanceKey'] = '7160996c01ff76310ae52e28587269ee';
$params['uid'] = '3245443534';
$params['userType'] = 'guest';
$params['token'] = 'd367f4699214cec412f7c2a1d513fe05';
$params['expire'] = '1555255757';
$params['firstLogin'] = '1';
$params['preRegister'] = '0';
$params['sessionId'] = '292534545';

// 先判断信息是否超时(expire如果低于当前时间戳,则超时)
if (intval($params['expire']) < time()) {
    return '登录信息超时,请客户端重新调用SDK登录方法';
}

// 按参数名字母升序排序,并连接字符串,生成sign
ksort($params);
$linkString = '';
foreach ($params as $k => $v) {
    $linkString .= $k.'='.$v.'&';
}
$linkString = rtrim($linkString, '&');
// 加密前字符串
// expire=1555255757&firstLogin=1&instanceKey=7160996c01ff76310ae52e28587269ee&preRegister=0&sessionId=292534545
// &token=d367f4699214cec412f7c2a1d513fe05&uid=3245443534&userType=guesta5e283b0b4267f3dc9c36203eaf88cae
$gameSign = md5($linkString.$instanceSecret);

// 比对sign
if (strcmp($gameSign, $sdkSign) == 0) {
    return "登录成功";
} else {
    return "签名不匹配,请客户端重新调用SDK登录方法";
}