discuz
来自于:开发者立即使用
概述
discuz模块封装了部分discuz论坛的接口,使用本模块,需要先部署discuz论坛。配合服务器端接口模块即可实现移动App的discuz的论坛功能,服务器端模块下载地址:https://pan.baidu.com/s/1cct9ZC ,解压rar中的apicloud目录到你的discuz根目录即可使用,本模块支持discuz X2.5 - X3.2 UTF8编码。
接口模块使用方法
接口部分采用php编写,ajax提交后,调用discuz内部API返回json数据串,下载接口文件后解压到bbs根目录,结构如下:
红色部分即解压后拷入的接口文件。
UI界面组织
本模块不自带UI,需要开发者根据情况自行编写,通过返回的JSON串解析后动态生成UI。 举例说明:
调用index方法后获得JSON串为:
{
"catlist": [{
"fid": "1",
"name": "个人健康",
"forumlist": [{
"fid": "51",
"name": "健康知识",
"description": "",
"threads": "0",
"posts": "0",
"todayposts": "0",
"lastpost": {
"author": "",
"dateline": "",
"subject": "",
"tid": 0
}
}, {
"fid": "53",
"name": "健康小课堂",
"description": "",
"threads": "0",
"posts": "0",
"todayposts": "0",
"lastpost": {
"author": "",
"dateline": "",
"subject": "",
"tid": 0
}
}]
}, {
"fid": "50",
"name": "活动消息",
"forumlist": [{
"fid": "54",
"name": "最新消息",
"description": "",
"threads": "3",
"posts": "3",
"todayposts": "0",
"lastpost": {
"author": "admin",
"dateline": "2016-5-2 16:23",
"subject": "免费体检通知",
"tid": 403
}
}]
}, {
"fid": "42",
"name": "咨询医生",
"forumlist": [{
"fid": "46",
"name": "快捷回复",
"description": "",
"threads": "0",
"posts": "0",
"todayposts": "0",
"lastpost": {
"author": "",
"dateline": "",
"subject": "",
"tid": 0
}
}, {
"fid": "44",
"name": "问答患者",
"description": "",
"threads": "0",
"posts": "0",
"todayposts": "0",
"lastpost": {
"author": "",
"dateline": "",
"subject": "",
"tid": 0
}
}]
}],
"errcode": 0,
"errmsg": ""
}
主板块有3个,分别是个人健康、活动消息、咨询医生,个人健康的子版块有“健康知识”、“健康小课堂”;活动消息的子版块有“最新消息”;咨询医生的子版块有“快捷回复”、“问答患者”,我们要实现的UI样式如下:
在index方法的回调中实现如下处理:
var html = '';
for (var i = 0; i < ret.catlist.length; i++) { //读取主板块
var list = ret.catlist[i];
html += '<span>' + list.name + '<span><br/>';
html += '<ul class="aui-list-view">';
for (var k = 0; k < list.forumlist.length; k++) { //读取子版块
var sublist = list.forumlist[k];
html += ' <li class="aui-list-view-cell">';
html += '<div class="aui-arrow-right">' + sublist.name + '</div>';
html += '</li>';
}
html += '</ul>';
}
$api.html($api.byId('list'), html); //把生成的html动态加入容器中
使用此模块之前需先配置config文件的Feature,方法如下:
名称:discuz
参数:url、key
描述:discuz的访问地址及后端通讯秘钥,都是必要字段。
配置示例:
<feature name="discuz">
<param name="url" value="//community.apicloud.com/bbs" />
<param name="key" value="apicloud" />
</feature>
字段描述:
1. url:能访问到的你的bbs地址,即你discuz的首页地址。如:http://192.168.13.101/Discuz
2. key:自定义模块访问秘钥,不需要申请,数字或英文字符组成6位到20位长,如123456。
reg
在论坛中注册用户
reg(params,callback(ret));
params
username:
- 类型: 字符串
- 描述: 注册用户名.
- 必须参数: 是
password:
- 类型: 字符串
- 描述: 用户密码.
- 必须参数: 是
email:
- 类型: 字符串
- 默认值: 按注册提交时间字符串组成的邮箱,如20160101121118@apicloud.com
- 描述: 用户邮箱.
- 必须参数: 否
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, msg:{ //返回的json字符串 uid:1, //用户uid,很重要,后续授权操作需要 errcode:0,// 错误代码,0为无错误 errmsg:"" //错误描述 } }
示例代码
var obj = api.require('discuz');
obj.reg({
username: 'test',
password: '123456',
email: '12345@apicloud.com'
}, function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
补充说明
用户注册后即为登录状态,不需要再调用login方法。
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
login
用户登录
login(params,callback(ret));
params
username:
- 类型:字符串
- 描述:用户名
- 必须参数: 是
password:
- 类型:字符串
- 描述:用户密码
- 必须参数: 是
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, msg:{ //返回的json字符串 uid:1, //用户uid,很重要,后续授权操作需要 errcode:0,// 错误代码,0为无错误 errmsg:"" //描述 } }
示例代码:
var obj = api.require('discuz');
obj.login({
username: 'test',
password: '123456'
}, function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
补充说明
在android系统中,app中用户登陆后直接关闭程序再次进入app无需登录,登录状态会一直保存在session中,除非执行logout方法才能真正退出登录状态。
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
logout
退出登录状态
logout(callback(ret));
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, msg:{ //返回的json字符串 errcode:0,// 错误代码,0为无错误 errmsg:"" //描述 } }
示例代码
var obj = api.require('discuz');
obj.logout(function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
补充说明
此方法配合login使用,一般在程序退前调用,或者在用户登录前用于清除session。
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
profile
个人资料
profile(params,callback(ret));
params
uid:
- 类型:字符串
- 描述:自定义事件的ID,不能为空
- 必须参数:是
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, msg:{ //返回的json字符串 profile:{ follower:0, //听众数 regdate:2016-5-20 08:44,//注册时间 friends:0, //好友数 extcredits8:0, //自定义积分字段 extcredits7:0, //自定义积分字段 extcredits6:0, //自定义积分字段 extcredits5:0, //自定义积分字段 extcredits4:0, //自定义积分字段 extcredits3:0, //自定义积分字段 extcredits2:0, //自定义积分字段 extcredits1:0, //自定义积分字段 threads:5, //发布的帖子数 regip:0.0.0.0, //注册时ip regip_loc:无, //注册地点(注:管理员的注册IP不会显示) lastip:222.111.222.121, //最后登录ip lastip_loc:-上海, //最后登录地点 uid:1, //用户id email:abc@abc.com, //注册email地址 posts:7, //回帖数 following:0, //收听数 lastvisit:2016-5-20 12:12,//最后访问时间 avatar:http://xx.ss.com/...,//头像图片地址 oltime:0, //在线时长,单位:小时 sharings:0, //分享数 onlinestatus:0, //在线状态,0不在线;1在线 username:aop, //用户名 }, errcode:0,// 错误代码,0为无错误 errmsg:"" //描述 } }
示例代码
var obj = api.require('discuz');
obj.profile({
uid: '1'
}, function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
补充说明
uid可以是登录用户的id,也可以是其他用户的id。
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
chpassword
修改登录用户密码
chpassword(params,callback(ret));
params
oldpss:
- 类型:字符串
- 描述:旧密码
- 必须参数:是
newpass:
- 类型:字符串
- 默认值:无
- 描述:新密码
- 必须参数:是
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, msg:{ //返回的json字符串 errcode:0,// 错误代码,0为无错误 errmsg:"" //描述 } }
示例代码
var obj = api.require('discuz');
obj.chpassword({
oldpass: 'brand', //旧密码
newpass: 'vl' //新密码
}, function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
补充说明
此方法需要在login方法成功后才能使用,如未登录则提示进行登录。
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
avatar
修改已登录用户的头像
avatar(params,callback(ret));
params
path:
- 类型:字符串
- 描述:图片的url地址
- 必须参数:是
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, msg:{ //返回的json字符串 errcode:0,// 错误代码,0为无错误 errmsg:"头像更新成功" //描述 } }
示例代码
var obj = api.require('discuz');
obj.avatar({
path: url //jpg图片地址,可以通过api.getpicture获得
}, function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
补充说明
在login成功后使用本方法
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
viewnotic
查看我的提醒
viewnotic(params,callback(ret));
params
isread:
- 类型:数字
- 默认值:0
- 描述:0-未读提醒,1-已读提醒
- 必须参数:否
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, msg:{ //返回的json字符串 errcode:0,// 错误代码,0为无错误 errmsg:"", //描述 noticelist:[{ author:admin, //发布者用户名 uid:2, //用户编号 note:你好, //提醒内容 id:4, //提醒编号 authorid:1, //发布者ID from_id:8, //来源id from_num:0, //来源号码 type:post, //消息类型,post-帖子,system-系统 from_idtype:notification,// 来源类型 new:0 //是否新提醒,1-是,0-否 },{ ...... //第二条提醒 } ] } }
示例代码
var obj = api.require('discuz');
obj.viewnotic({
isread: 1 //查看已读消息
}, function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
补充说明
需要在login后执行,只能查看登陆用户的提醒。
可用性
iOS系统 Android系统 可提供的1.0.0及更高版本
viewnews
查看已登录用户的消息
viewnews(callback(ret));
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, msg:{ //返回的json字符串 errcode:0,// 错误代码,0为无错误 errmsg:"" //描述 pmlist:[{ message:你好, //消息内容 subject:hello, //消息标题 uid:2, //发送者id plid:1, //消息编号 msgtoid:1, //接收者id tousername:admin //接收者用户名 },{ ...... //第二条消息 }] } }
示例代码
var obj = api.require('discuz');
obj.viewnews(function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
补充说明
在login成功后使用本方法
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
delnews
删除1条消息
delnews(params,callback(ret));
params
plid:
- 类型:数字
- 描述:消息id
- 必须参数:是
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, msg:{ //返回的json字符串 errcode:0,// 错误代码,0为无错误 errmsg:"消息删除成功" //描述 } }
示例代码
var obj = api.require('discuz');
obj.delnews({
plid: 1 //在viewniews中获得的plid
}, function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
补充说明
在login成功后使用本方法
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
walllist
查看登录用户的留言列表
walllist(callback(ret));
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, msg:{ //返回的json字符串 errcode:0,// 错误代码,0为无错误 errmsg:,//描述 list:[{ //留言列表 cid:1, //留言编号 uid:2, //用户id authorid:1, //留言者id author:admin, //留言者用户名 message:你好 //留言信息 }], total:1, //留言总数 perpage:20 //每页20条留言 } }
示例代码
var obj = api.require('discuz');
obj.walllist(function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
补充说明
在login成功后使用本方法
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
addfavorite
收藏帖子
addfavorite(params,callback(ret));
params
tid:
- 类型:数字
- 描述:主题id
- 必须参数:是
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, msg:{ //返回的json字符串 errcode:0,// 错误代码,0为无错误 errmsg:"收藏成功",//描述 } }
示例代码
var obj = api.require('discuz');
obj.addfavorite({
tid: 2 //主题的id
}, function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
补充说明
在login成功后使用本方法
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
favorite
查看登录用户的收藏列表
favorite(callback(ret));
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, errcode:0,// 错误代码,0为无错误 errmsg:,//描述 msg:{ //返回的json字符串 favlist:[{ //收藏列表 idtype:tid, //收藏类型帖子 favid:2, //收藏id uid:2, //收藏者id id:2, //帖子id dateline:2016-5-20 12:12, //收藏时间 title:你好, //帖子标题 icon:http://sss.ccc.com/xxx.gif //帖子图标 message:你好 //留言信息 }] } }
示例代码
var obj = api.require('discuz');
obj.favorite(function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
补充说明
在login成功后使用本方法
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
delfavorite
删除收藏的帖子
delfavorite(params,callback(ret));
params
favid:
- 类型:数字
- 描述:收藏id
- 必须参数:是
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, msg:{ //返回的json字符串 errcode:0,// 错误代码,0为无错误 errmsg:"删除成功",//描述 } }
示例代码
var obj = api.require('discuz');
obj.delfavorite({
favid: 2 //收藏id,可通过favorite获取
}, function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
补充说明
在login成功后使用本方法
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
index
查看板块列表
index(callback(ret));
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, errcode:0,// 错误代码,0为无错误 errmsg:"",//描述 msg:{ //返回的json字符串 catlist:[{ //板块列表 fid:1, //板块id name:高谈阔论, //板块名称 forumlist:[{ //版块内帖子列表 todayposts:0, //今日发帖数量 threads:10, //版块内帖子数 posts:22, //总回帖数 lastpost:{ //最后回帖 author:sasa, //回复者 subject:hello, //标题 tid:2, //主题id dateline:昨天 21:12 //回帖时间 } }] } }
示例代码
var obj = api.require('discuz');
obj.index(function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
subforum
子版块列表
subforum(params,callback(ret));
params
fid:
- 类型:数字
- 描述:父板块的id
- 必须参数:是
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, msg:{ //返回的json字符串 errcode:0,// 错误代码,0为无错误 errmsg:"删除成功",//描述 sublist:[{ //板块列表 todayposts:0, //今日发帖数量 fid:1, //板块id posts:16 //回帖数 name:高谈阔论, //板块名称 threads:10, //版块内帖子数 lastpost:{ //最后回帖 author:sasa, //回复者 subject:hello, //标题 tid:2, //主题id dateline:昨天 21:12 //回帖时间 } }] } }
示例代码
var obj = api.require('discuz');
obj.subforum({
fid: 2 //父板块id,可通过index获取
}, function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
forumdisplay
一个版块内的主题帖列表
forumdisplay(params,callback(ret));
params
fid:
- 类型:整数
- 描述:板块的id
- 必须参数:是
page:
- 类型:整数
- 默认值:1
- 描述:页数
- 必须参数:否
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, msg:{ //返回的json字符串 errcode:0,// 错误代码,0为无错误 errmsg:"删除成功",//描述 threadlist:[{ //板块列表 subject:hello, //帖子标题 fid:1, //板块id author:sasa, //发帖用户名 authorid:2, //发帖用户id lastpost:昨天 12:11 //最后回复时间 lastposter:sasa, //最后回复者 avatar:http://www.ss.cc/, //最后回复者头像 dateline:2016-5-11, //发帖日期 replies:0, //回复次数 tid:11, //主题id status:0, //状态 views:3 //浏览次数 },{ ....... //其他主题帖 }], total:4, //总主题数 page:1 //当前页码 } }
示例代码
var obj = api.require('discuz');
obj.forumdisplay({
fid: 2 //板块id,可通过index获取
}, function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
补充说明
一般20条帖子为1页,total/20=总页数,如需翻页请加入page参数
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
viewthread
查看主题帖
viewthread(params,callback(ret));
params
tid:
- 类型:整数
- 描述:主题id
- 必须参数:是
page:
- 类型:整数
- 默认值:1
- 描述:页数,默认10条记录为一页,超过1页的需要输入page参数才能看到第11条记录。
- 必须参数:否
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, msg:{ //返回的json字符串 errcode:0,// 错误代码,0为无错误 errmsg:"", //描述 thread:{ //主题概要 subject:hello, //帖子标题 favtimes:0, //收藏数 fid:36, //板块id author:sasa, //发布者 authorid:2, //发布者id relay:0, //转发数 replies:8, //回复数 attachment:0, //附件数 sharetimes:0, //分享数 recommend_sub:0, //反对人数 recommend_add:0, //支持人数 tid:8, //主题id views:8}, //浏览数 perpage:10, //每页数量 total:9, //总回复数 page:1, //当前页码 sticklist:[{ //推荐回复 author:sasa, //回复者 dateline:2016-5-20 12:12 //回复时间 avatar:http://xx.c.com/xxx //头像url authorid:2, //回复者id message:你好, //回复帖内容 pid:20, //帖子id }], postlist:[{ //帖子列表 first:1, //是否主帖,1-是,0-否 subject:hello, //标题 comments:[], //评论列表 message:你好, //帖子内容 fid:36, //板块id author:sasa, //发布者 authorid:2, //发布者id avatar:http://sss.xx.com //头像图片url dateline:前天 12:11, //发布时间 attachments:[], //附件列表 pid:11, //帖子id tid:8 //主题id },{ ...... //更多回帖 }] } } }
示例代码
var obj = api.require('discuz');
obj.viewthread({
tid: 8 //主贴id,可通过forumdisplay获取
}, function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
ranklist
帖子排行榜,按条件列出主题记录
ranklist(params,callback(ret));
params
view:
- 类型:字符串
- 描述:检索条件,可选值:replies(回复最多)|views(浏览最多)|sharetimes(分享最多)|favtimes(收藏最多)|heats(最热)
- 必须参数:是
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, msg:{ //返回的json字符串 errcode:0,// 错误代码,0为无错误 errmsg:"删除成功",//描述 threadlist: [{ tid: 8, //主题id fid: 36, //版块id author: sasa, //发布者 authorid: 2, //发布者id subject: 不会的得到, //标题 dateline: "2016-5-20 15:59", //发布时间 views: 6, //浏览数 replies: 8, //回复数 favtimes: 0, //收藏数 sharetimes: 0, //分享数 heats: 2, //热度 forum: 测试子版1, //板块名称 rank: 1 //排行名次 },{ tid: 1, fid: 2, "author": "admin", "authorid": "1", "subject": "dsdasdasdsa", "dateline": "2016-5-20 09:03", "views": "4", "replies": "1", "favtimes": "0", "sharetimes": "0", "heats": "1", "forum": "测试板块1", "rank": 2 },{ ...... //更多排行 }] } }
示例代码
var obj = api.require('discuz');
obj.ranklist({
view: 'views' //排行条件,views-浏览最多的主题
}, function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
newthread
发表新的主题帖
newthread(params,callback(ret));
params
fid:
- 类型:整数
- 描述:板块id
- 必须参数:是
subject:
- 类型: 字符串
- 描述:主题帖标题
- 必须参数:是
message:
- 类型: 字符串
- 描述:主题内容,可以是超文本格式
- 必须参数:是
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, msg:{ //返回的json字符串 tid:1, //返回的主题id errcode:0,// 错误代码,0为无错误 errmsg:"主题发布成功" //错误 } }
示例代码
var obj = api.require('discuz');
obj.newthread({
fid: 2, //发布主题的板块id
subject: '123456', //标题
message: '啊实打实的' //内容
}, function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
补充说明
在login方法后调用。
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
newreply
回复主题帖
newreply(params,callback(ret));
params
tid:
- 类型:整数
- 描述:主题id
- 必须参数:是
message:
- 类型: 字符串
- 描述:回复内容,可以是超文本格式
- 必须参数:是
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{ status:1, msg:{ //返回的json字符串 pid:1, //返回的回复贴id errcode:0,// 错误代码,0为无错误 errmsg:"回复发布成功" //描述 } }
示例代码
var obj = api.require('discuz');
obj.newreply({
tid: 2, //主题id
message: '啊实打实的' //内容
}, function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
补充说明
在login方法后调用。
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本