# 统一授权认证 服务端 API (国内)
# 1. 认证服务器端登录票据验证接口
用法说明
为了保证游戏服务器的安全性,游戏服务器在登记用户登录信息之前需要到G家平台服务器做一个验证
接口地址
https://mservice.u.sdo.com/v1/open/ticket
传值方式
GET
参数列表
appid: 游戏对应的APPID
timestamp: 精确到秒的unix时间戳
sequence: 不重复的请求序列号(全局唯一)
ticket_id: 从客户端登录接口返回的ticket字符串;
sign: 签名串(参考:“附录A:服务器端签名算法”,签名原始串示例:appid=xxx&sequence=xxx&ticket_id=xxx & timestamp=xxxappsecretkey)
返回结果
返回结果按json编码,数据格式为:
{
"code":0, #返回状态,0为成功,1为失败,2 签名错误7 osap商户不存在,3001 票据不存在或超过有效期或被反复验证,1003 票据申请的appId和验证的APPID不一致
"msg":"ok", #错误信息
"data":{
"userid":123456, #平台用户id,纯数字,无类型。
"token":"40E00263-16A7-8CFA-D0E8-C951D683EA24", #平台TOKEN,36位字符串,暂时不用
"phone":"+86-139****6893", #手机帐号,带国际区号,可用于显示帐号
"invitation_code":"34343", #邀请码
"thirdId":"34343", #第三方账号ID
"companyId":"172", #第三方公司ID,172表示为盛趣账号体系
"userAttribute": "6", #6表示游客,其他值表示非游客
"adult_flag":2, #0未实名,1未成年,2成年
"ptid":"ac12345bd.pt", #pt账号,仅当companyId=172时返回
"sndaCompanyId":"301" #微信微博qq账号接入盛趣账号体系第三方id,300:微信;301:QQ;302:微博 等
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 2. 附录A:服务器端签名算法
参数说明:
timestamp为调用接口时的unix时间戳(精确到秒)
sequence为请求序列号(游戏服务器端需要保证两次调用接口生成的sequence不重复)
签名算法:
调用方首先需要将请求的参数根据参数的key(ASCII码值)进行升序排序
将排序好的接口请求参数和参数值按key=val&key2=val2…这样得格式拼装成一个字符串,并在最后加上与APPID对应的APPKEY
对上述拼接好的字符串进行md5编码,获得最终的签名串
代码示例(PHP):
public function sign ($params, $secret_key) { // $params数组必须包含timestamp
ksort($params);
$pair = array();
foreach($in as $k => $v){
$pair[] = $k. '=' .$v;
}
$str = implode('&', $pair); // 拼接字符串
$str = $str.$secret_key; // 把APPKEY补充到最后
return md5($str);
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10