# 统一授权认证 服务端 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. 附录A:服务器端签名算法

  • 参数说明:

    1. timestamp为调用接口时的unix时间戳(精确到秒)

    2. sequence为请求序列号(游戏服务器端需要保证两次调用接口生成的sequence不重复)

  • 签名算法:

    1. 调用方首先需要将请求的参数根据参数的key(ASCII码值)进行升序排序

    2. 将排序好的接口请求参数和参数值按key=val&key2=val2…这样得格式拼装成一个字符串,并在最后加上与APPID对应的APPKEY

    3. 对上述拼接好的字符串进行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

Last Updated: 2024/6/14 03:34:23