Discuz!NT 提供了很多对外的接口利于与别的网站进行整合,经本人亲测,觉得开放的接口还是挺到位的。开发、测试一次通过,只不过api文档寻找无门,只能自己琢磨,费了不少周折,不过,功夫不负有心人,最终还是搞定了。
第一步、Discuz!NT 的安装,不再描述了,网上的安装教程多的是。注意安装目录,如果是根目录,直接默认即可。如果是某一个文件夹下,如/bbs/等,在安装前可将BBS文件的根目录的DNT.config文件做相应修改,如下面代码。
<?xml version="1.0"?> <BaseConfigInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Dbconnectstring>Data Source=.;User ID=sa;Password=123456;Initial Catalog=bbs;Pooling=true</Dbconnectstring> <Tableprefix>dnt_</Tableprefix> <Forumpath>/dnz/</Forumpath><!--更改为对应目录,根目录直接默认就行--> <Dbtype>SqlServer</Dbtype> <Founderuid>0</Founderuid> </BaseConfigInfo>
第二步、下载开发包DiscuzToolkit
第三步、登陆论坛后台,选择“扩展”——》“通行证设置”——》“添加整合程序设置”
第四步、论坛会员——》网站会员
Discuz!NT 的说明文档未找到,只能用笨办法,把送过来的参数一一解析。本人建了一个单独处理送过来的数据的文件,加入对应的逻辑即可。下载文件
第五步、网站会员——》论坛会员
把DiscuzToolkit添加到现有的项目中,web解决方案,添加引用。
现在就要用到通行证的API_KEY、SECRET、RETURL,可将他设为静态变量、或者web.config中的配置节。我这里是将这些信息放到了APPSETTING中。API函数很多地方用到论坛用户的uid,所以在自己网站的会员信息表中需要新增一个存放论坛会员ID的字段。
登录
DiscuzSession ds = new DiscuzSession("API_KEY", "SECRET", "RETURL");//对应论坛扩展中的 API_KEY/SECRET/RETURL ds.Login(UID, PassWord.ToLower(),true, 10, ""); //论坛用户UID ds = null;
注册
DiscuzSession ds = new DiscuzSession("API_KEY", "SECRET", "RETURL"); int bbsid = ds.Register(UserName,PassWord.ToLower(),UserEmail, true); //修改会员信息UID逻辑
修改个人资料
#region 更改论坛对应用户信息 DiscuzSession ds = new DiscuzSession("API_KEY", "SECRET", "RETURL"); UserForEditing ufe = new UserForEditing(); ufe.Mobile = Mob; ufe.Phone = Tel; ufe.RealName = RealName; ufe.Location = Address; ds.SetUserInfo(UID, ufe); ufe = null; ds = null; #endregion
修改密码
#region 更改论坛对应用户信息 DiscuzSession ds = new DiscuzSession("API_KEY", "SECRET", "RETURL"); UserForEditing ufe = new UserForEditing(); ufe.Password = PassWord.ToLower(); ds.SetUserInfo(UID,ufe); ufe = null; ds = null; #endregion
至此,论坛的对接工作就已经完成了,剩下的就是测试和微调了。
遇到的问题:做的过程中发现Discuz!NT会员设置头像不成功,检查目录图片文件上传上去了,说明目录权限没问题。下载的论坛版本又没有源代码,只能从网上找答案了。最终解决方案为:把网站的应用程序池的“托管管道模式”由“集成”改为“经典”。