小川科技
切换版本:


安全规范

每款游戏对应一对appkey 、appsecret appsecret确保双方不泄漏,否则有被恶意攻击的风险
参数
类型
描述
补充说明
uidstring从sdk获取的uid
appkeystring平台为单个游戏下发的appkay
tsint64从sdk获取的时间戳
appsecretstringappkey对应的appsecretappsecret应该保密,不允许暴露给前端
signstring从sdk获取的sign,按照规则在服务端生成sign后进行比较,如果相同,则验证通过
将上表中待发送的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 然后生成 sign:base64(md5(stringA))
例:
base64(md5("appkey=" + appkey + "&appsecret=" + appsecret + "&ts=" + ts +"&uid=" + uid))

集成方式:


<html>
  <body>
    <!-- "?" 后面的参数仅在本地debug时生效,生产环境并不生效,生产环境最好删除debug参数 -->
    <script src="https://static.ixiaochuan.cn/game-sdk/sdk.1.0.7.js?uid=xxx&sign=yyyyy&ts=11111" />
    <script>
      var appKey = 'your appKey'
      __XCgs.call('init')(appKey, function(err, data) {
        if(err) {
          alert(err)
          return
        }
        var uid = data.uid
        var ts = data.ts
        var sign = data.sign
        /** 
         * 注:      checkSign 只是 demo 方法,并不需要一定叫这个名字, 请勿直接复制执行。
         * 具体功能: 将 "uid", "ts", "sign" 发送请求给己方的服务器进行sign的校验
        */
        checkSign(uid, ts, sign)
        // do something
      })
    </script>
  </body>
</html>

错误类型:


interface ERROR {
  code: number
  message: string
}

初始化 -- init(所有其他接口都需要在初始化完成后才可以正常使用)

callback方式调用


  var appkey = 'your appkey'
  __XCgs.call('init')(appkey, function(err, data) {
    if(err) {
      // 初始化失败
      alert(err.message)
      return
    }
    var uid = data.uid
    var ts = data.ts
    var sign = data.sign
    // do something
  })

promise方式调用(>= 1.0.3)


  const init = async () => {
    try {
      const appkey = 'your appkey'
      const {uid, ts, sign} = await __XCgs.call('init')(appkey)
    } catch(e) {
      // 初始化失败
      console.log(e.message)
    }
  }

播放激励视频 -- playRewardAd

callback方式调用


  /** 
   * status 的值如下:
   * status = 0 [获取结果失败]
   * status = 1 [用户成功看完视频]
   * status = 2 [用户没看完视频]
   * 注: status 是在视频播放成功的情况下才会返回,如果播放失败,则不会有status
   */
  __XCgs.call('playRewardAd')(function(err, ret) => {
    if(err) {
      // 播放失败
      alert(err.message)
      return
    }
    // 播放成功,但是不代表用户看完了激励视频
    console.log(ret.status)
  })

promise方式调用


 const play = async () => {
  try {
    // 播放成功,但是不代表用户看完了激励视频。status 值见上文
    const {status} = await __XCgs.call('playRewardAd')()
  } catch(e) {
    // 播放失败
    console.log(e.message)
  }
 }