reg login logout profile chpassword avatar viewnotic viewnews delnews walllist addfavorite favorite delfavorite index subforum forumdisplay viewthread ranklist newthread newreply
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,需要开发者根据情况自行编写,通过返回的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(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(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(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(params,callback(ret));
params
uid:
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(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(params,callback(ret));
params
path:
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(params,callback(ret));
params
isread:
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(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及更高版本
删除1条消息
delnews(params,callback(ret));
params
plid:
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(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(params,callback(ret));
params
tid:
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(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(params,callback(ret));
params
favid:
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(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(params,callback(ret));
params
fid:
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(params,callback(ret));
params
fid:
page:
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(params,callback(ret));
params
tid:
page:
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(params,callback(ret));
params
view:
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(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(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及更高版本