@Jazka
2018-06-29T22:36:55.000000Z
字数 8699
阅读 1525
每个接口有指定的签名串,签名规则如下
params_str = 按 k 的自然排序,按如下格式拼接 a=xxx&b=xxx&c=xxx
sign = md5(app_key + params_str + app_secret)
如果请求参数中有空字符串的参数,该参数不参与签名计算
Android app_key: 单独发放
secret_key: 单独发放
签名过期时间: 60s
0 成功
101 未知错误
102 DB保存错误
103 逻辑错误
104 验证码输入错误
105 登录次数超限
106 签名错误
107 参数无效
108 验证码发送失败
202 用户不存在
204 认证错误
205 封禁的用户
json post
pver、ver、time 全局必传
pver: 协议版本 0.1 String
ver: Android传 a-渠道-版本号 例 a-yingyongbao-0.3
Request: POST /api/v1/getcode
Params:
* mobile, String, 手机号码
* pver, String, 协议版本
* ver, String, 客户端版本,a1.0
* time, String, Unix时间戳
* sign, String, sign(mobile + time)
Response:
{
code: 0:正常, >0:
msg: "", //具体错误原因
data: {}
}
Request: POST /api/v1/signin
Params:
* mobile
* code, String, 验证码
* pver
* ver
* time
* sign, String, sign(mobile + code + time)
Response:
{
code: 0:正常, >0 按error信息提示错误
msg: "",
data: {
uid: "123456" //String, 用户ID
token: xxxxxx //String, 通信的token, 本地保存
}
}
Request: POST /api/v1/syncdevice
Params:
* token, String, 客户端登录凭证
* pver
* ver
* time
* osType, String, 0:iOS, 1:Android
* udid, String, iOS:IDFA, Android:imei
* pushToken, String, 消息推送token
* model, String, 机型
* sysver, String, 系统版本
* root, String, 0:非root或未越狱, 1:root或越狱,检测不到传0
* sign, String, sign(token + udid + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {}
}
Request: POST /api/v1/signout
Params:
* token
* pver
* ver
* time
* sign, String, sign(token + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {}
}
支持免登使用,若非登录状态,token传 "" 空字符串
Request: POST /api/v1/tags
Params:
* token
* pver
* ver
* time
* sign, String, sign(token + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {
"tagList":[
{
"tagId": "0", String //分类ID
"tagName": "推荐", String//分类名称
},
{
"tagId": "1", String //分类ID
"tagName": "娱乐", String//分类名称
},
{
"tagId": "2", String //分类ID
"tagName": "历史", String//分类名称
}
]
}
}
免登使用,若非登录状态,token传 "" 空字符串
Request: POST /api/v1/articles
Params:
* token
* page, 页码,不传默认1
* len, 获取文章数量, 不传默认20
* tagId
* pver
* ver
* time
* sign, String, sign(token + tagId + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {
"list":[
{//图文格式
"style": 0, Int,可能有其他显示类型,包括广告
"aid": "123", String 文章ID
"title":"那些马桶盖电饭锅的情怀", String
"iconUrls":"http://xxx.png" String
"desc": "在这个分分钟看数据的时代"
"author": "KELEJUN"
"avatar":"http://xxx.png" String // 头像url
"votes": 7172 // 投票数
"award": "4.2w" // 奖金数
}
]
}
}
竞技区必须登录
Request: POST /api/v1/athtags
Params:
* token
* pver
* ver
* time
* sign, String, sign(token + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {
"tagList":[
{
"tagId": "0", String //分类ID
"tagName": "推荐", String//分类名称
"show": 0, 0: 不显示;1:显示
},
{
"tagId": "1", String //分类ID
"tagName": "娱乐", String//分类名称
"show": 1, 0: 不显示;1:显示
}
]
}
}
竞技区必须登录
Request: POST /api/v1/atharticles
Params:
* token
* tagId
* pver
* ver
* time
* sign, String, sign(token + tagId + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {
"list":[
{//图文格式
"style": 0, Int,可能有其他显示类型,包括广告
"aid": "123", String 文章ID
"title":"那些马桶盖电饭锅的情怀", String
"iconUrls":"http://xxx.png" String
"votes": 0, Int // 用户的投票数,如果未投票,返回0
"voteLimit": 5, Int // 文章的可投票上限
}
]
}
}
如果可以未登录查看文章,token可传空
Request: GET /webview/article/view?aid=xxxx&token=xxx&time=xxxx&pver=xxx&ver=xxx&sign=xxx
Params:
* token
* aid, 文章ID
* pver
* ver
* time
* sign, sign(token + aid + time)
Response: HTTP 200 OK
Request: POST /api/v1/articleinfo
Params:
* token
* aid, 文章ID
* pver
* ver
* time
* sign, sign(token + aid + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {
"rewardCnt": 18, Int // 打赏数
"collectCnt": 899, Int // 收藏数
"collected": 0 - 用户未收藏;1 - 用户已收藏, Int
"rewarded": 0 - 用户未打赏;1 - 用户已打赏, Int
"comments": [
{
"cid": "123", String // 评论ID
"tm": 1522821432, Long // Unix时间戳
"avatar":"http://xxx.png" String // 头像url
"pseudonym": “来读狂作家”, String // 笔名
"content": "xxxx", String // 评论内容
"cmVoteCnt": 3424,Long // 评论点赞数
"cmVoted": 0-未对点赞, 1-已经点赞 // 用户是否点赞该评论
},
{
"cid": "123", String // 评论ID
"tm": 1522821432, Long // Unix时间戳
"avatar":"http://xxx.png" String // 头像url
"pseudonym": “来读狂作家”, String // 笔名
"content": "xxxx", String // 评论内容
"cmVoteCnt": 3424,Long // 评论点赞数
"cmVoted": 0-未对点赞, 1-已经点赞 // 用户是否点赞该评论
}
]
}
}
Request: POST /api/v1/comments
Params:
* token
* aid, 文章ID
* page, 页码,不传默认1
* len, 获取数量, 不传默认20
* pver
* ver
* time
* sign, sign(token + aid + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {
"comments": [
{
"cid": "123", String // 评论ID
"tm": 1522821432, Long // Unix时间戳
"avatar":"http://xxx.png" String // 头像url
"pseudonym": “来读狂作家”, String // 笔名
"content": "xxxx", String // 评论内容
"cmVoteCnt": 3424,Long // 评论点赞数
"cmVoted": 0-未对点赞, 1-已经点赞 // 用户是否点赞该评论
},
{
"cid": "123", String // 评论ID
"tm": 1522821432, Long // Unix时间戳
"avatar":"http://xxx.png" String // 头像url
"pseudonym": “来读狂作家”, String // 笔名
"content": "xxxx", String // 评论内容
"cmVoteCnt": 3424,Long // 评论点赞数
"cmVoted": 0-未对点赞, 1-已经点赞 // 用户是否点赞该评论
}
]
}
}
Request: POST /api/v1/addcomment
Params:
* token
* aid, 文章ID
* pver
* ver
* time
* content,评论内容
* sign, sign(token + aid + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {}
}
Request: POST /api/v1/cmvote
Params:
* token
* cid, 评论ID
* pver
* ver
* time
* sign, sign(token + cid + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {}
}
--- 待定
--- 待定
Request: POST /api/v1/finishread
Params:
* token
* aid, 文章ID
* pver
* ver
* time
* sign, sign(token + aid + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {}
}
Request: POST /api/v1/articlecoll
Params:
* token
* aid, 文章ID
* pver
* ver
* time
* sign, sign(token + aid + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {}
}
Request: POST /api/v1/rock
Params:
* token
* rock: [{"tagId": "1", "show": 0}, {"tagId": "3", "show": 1} ...]
* pver
* ver
* time
* sign, String, sign(token + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {}
}
Request: POST /api/v1/athvote
Params:
* token
* tagId
* votes: [{"aid": "123", "vote": 3}, {"aid": "123", "vote": 3} ...]
* pver
* ver
* time
* sign, String, sign(token + tagId + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {}
}
Request: POST /api/v1/subslatest
Params:
* token
* page, 页码,不传默认1
* len, 获取文章数量, 不传默认20
* pver
* ver
* time
* sign, String, sign(token + page + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {
"list":[
{
"style": 0, Int,可能有其他显示类型,包括广告
"aid": "123", String 文章ID
"title":"那些马桶盖电饭锅的情怀", String
"desc": "xxxx", String // 简述
"iconUrls":"http://xxx.png", String
"author": "xxx", String //作者
"avatar":"http://xxx.png" String // 头像url
"tm": 1522821432, Long // Unix时间戳
}
]
}
}
Request: POST /api/v1/subsspecial
Params:
* token
* page, 页码,不传默认1
* len, 获取文章数量, 不传默认20
* pver
* ver
* time
* sign, String, sign(token + page + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {
"list":[
{
"author": "xxx", String // 作者笔名
"userid": "xxx", String //作者ID
"avatar":"http://xxx.png" String // 头像url
"unread": 6, Int // 未读的更新文章数
}
]
}
}
Request: POST /api/v1/autharticle
Params:
* token
* userid // 作者id
* pver
* ver
* time
* sign, String, sign(token + userid + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {
"list":[
{
"style": 0, Int,可能有其他显示类型,包括广告
"aid": "123", String 文章ID
"title":"那些马桶盖电饭锅的情怀", String
"desc": "xxxx", String // 简述
"iconUrls":"http://xxx.png", String
"tm": 1522821432, Long // Unix时间戳
}
]
}
}
Request: POST /api/v1/getuinfo
Params:
* token
* pver
* ver
* time
* sign, String, sign(token + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {
"mobile": "13133332222", String // 用户注册手机号
"avatar": "http://xxx.png", String // 用户头像url
"pseudonym": “来读狂作家”, String // 笔名
}
}
Request: POST /api/v1/updateuinfo
Params:
* token
* pver
* avatar // 修改后的用户头像url
* pseudonym // 修改后的用户笔名
* ver
* time
* sign, String, sign(token + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {}
}
Request: POST /api/v1/collection
Params:
* token
* page, 页码,不传默认1
* len, 获取文章数量, 不传默认20
* pver
* ver
* time
* sign, String, sign(token + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {
"list":[
{//图文格式
"style": 0, Int,可能有其他显示类型,包括广告
"aid": "123", String 文章ID
"title":"那些马桶盖电饭锅的情怀", String
"iconUrls":"http://xxx.png" String
"descrip": "在这个分分钟看数据的时代"
"author": "KELEJUN"
"votes": 7172 // 投票数
"award": "4.2w" // 奖金数
}
]
}
}
--- 待定
Request: POST /api/v1/myspecial
Params:
* token
* page, 页码,不传默认1
* len, 获取数量, 不传默认20
* type, 获取的类型,0-我的竞技、1-我的日常、2-我的投票
* pver
* ver
* time
* sign, String, sign(token + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {
"list":[
{//图文格式
"style": 0, Int,可能有其他显示类型,包括广告
"aid": "123", String 文章ID
"title":"那些马桶盖电饭锅的情怀", String
"iconUrls":"http://xxx.png" String
"desc": "在这个分分钟看数据的时代"
"author": "KELEJUN"
"avatar":"http://xxx.png" String // 头像url
"votes": 7172 // 投票数
"award": "4.2w" // 奖金数
}
]
}
}
Request: POST /api/v1/msgcomments
Params:
* token
* page, 页码,不传默认1
* len, 获取数量, 不传默认20
* pver
* ver
* time
* sign, sign(token + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {
"list": [
{
"cid": "123", String // 评论ID
"tm": 1522821432, Long // Unix时间戳
"avatar":"http://xxx.png" String // 头像url
"pseudonym": “来读狂作家”, String // 笔名
"content": "xxxx", String // 评论内容
"article": "给你三天时间,带你", String // 文章标题
},
...
]
}
}
Request: POST /api/v1/privatemsg
Params:
* token
* page, 页码,不传默认1
* len, 获取数量, 不传默认20
* pver
* ver
* time
* sign, sign(token + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {
"list": [
{
"tm": 1522821432, Long // Unix时间戳
"avatar":"http://xxx.png" String // 头像url
"pseudonym": “来读狂作家”, String // 笔名
"content": "xxxx", String // 评论内容
},
...
]
}
}
Request: POST /api/v1/uextrainfo
Params:
* token
* pver
* ver
* time
* sign, sign(token + time)
Response:
{
code: 0:正常, >1:其它错误按error信息提示
msg: "",
data: {
"athArticleNum": 4, int // 参选文章数
"cokeNum": 22, int // 获得可乐数
"capNum": 22, int // 瓶盖数
"fansNum": 254, int // 粉丝数
"athReward": "223", String // 获奖奖金,可能有小数,用String类型
"voteReward": "16", String // 投票奖金
"capReward": "12", String // 瓶盖奖金
]
}
}