切换版本:
1.0.x
安全规范
每款游戏对应一对appkey 、appsecret appsecret确保双方不泄漏,否则有被恶意攻击的风险
参数 | 类型 | 描述 | 补充说明 |
---|---|---|---|
uid | string | 从sdk获取的uid | |
appkey | string | 平台为单个游戏下发的appkay | |
ts | int64 | 从sdk获取的时间戳 | |
appsecret | string | appkey对应的appsecret | appsecret应该保密,不允许暴露给前端 |
sign | string | 从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)
}
}