排行榜功能
- 用户提交本人单次分数
- 获取当前指定排行榜实时数据
- 获取排行榜上一期最终数据
CP接入Badam排行榜SDK操作流程
graph TB
Register(注册CP用户)-->AddApp(添加应用,获得appid和apisecret)
AddApp-->AddBoard(找Badam技术申请添加排行榜,获取boardid)
AddBoard-->CPSvr(实现cp服务端到badam服务端对接)
CPSvr-->CPCli(cp客户端向cp服务端发起请求)
通讯协议
1 签名方式
- 所有请求均要求以下文描述方式进行签名
- 所有请求参数以json形式,序列化为一个字符串d
- 将d,apisecret,当前unix时间戳(精确到秒)ts,依次拼接成一个字符串s
- 算出s的md5摘要,以小写十六进制记录
举例说明:
假设某接口有以下参数
A="abc", B=456,当前app的apisecret为ab12cd34,发起请求的时刻为北京时间2018-09-11 22:32:00
这时候:
d = {"A":"abc","B":456}
apisecret = ab12cd34
ts = 1536676320
s = d + apisecret + ts = {"A":"abc","B":456}ab12cd341536676320
签名结果为md5('{"A":"abc","B":456}ab12cd341536676320') = ee3d10143d73a53890937e88bb158a6d
2 通讯方式
- 所有接口均通过https,向badam服务器发起post请求实现
- 所有接口均有且仅有4个字段:
字段名 |
含义 |
a |
appid |
t |
当前unix时间戳 |
d |
所有请求参数的json字符串 |
s |
签名结果 |
字段名 |
数据类型 |
是否必填 |
含义 |
备注 |
appid |
string |
是 |
应用id |
必须与外层a参数一致 |
boardid |
string |
是 |
排行榜id |
|
openid |
string |
是 |
用户openid |
登录时获取 |
token |
string |
是 |
用户登录态token |
登录时获取 |
score |
int64 |
是 |
分数 |
字段名 |
数据类型 |
含义 |
备注 |
result |
int |
操作结果 |
0为成功,非0为失败 |
message |
string |
结果描述 |
当result非0时,message为错误描述 |
3.2 获取排行榜数据
字段名 |
数据类型 |
是否必填 |
含义 |
备注 |
appid |
string |
是 |
应用id |
必须与外层a参数一致 |
boardid |
string |
是 |
排行榜id |
|
period |
int |
是 |
哪一期 |
0为当前榜单,1为上一期榜单 |
openid |
string |
否 |
用户openid |
登录时获取,当且仅当需要获取本人排名时带上 |
token |
string |
否 |
登录态token |
同上 |
offset |
int |
是 |
从第几条开始获取 |
第一条为0 |
limit |
int |
是 |
最多获取多少条 |
大于0,小于等于100 |
字段名 |
数据类型 |
含义 |
备注 |
result |
int |
操作结果 |
0为成功,非0为失败 |
message |
string |
结果描述 |
当result非0时,message为错误描述 |
data |
object |
结果数据 |
|
data.ranks |
RankInfo数据 |
获取的分页数据 |
|
data.has_more |
boolean |
是否还有更多数据 |
|
data.mine |
RankInfo对象 |
本人排名 |
当且仅当有有效openid+token时返回 |
RankInfo:
字段名 |
数据类型 |
含义 |
备注 |
rank |
int |
排名 |
|
nickname |
string |
昵称 |
|
icon |
string |
头像url |
|
score |
int64 |
分数 |