1.Discuz版本
我安装的Discuz是目前比较新的3.2版本。安装完以后UCenter已经安装好了。
2.第三方应用站点
自己开发的简单的web应用平台系统。
3.UCenter添加应用
3.1进入UCenter,http://***:8088/bbs/uc_server,***代表UCenter所在服务器ip地址或者域名,Apache端口默认的是80,由于需要,我把端口改成了8088(修改方法会在别的博文中叙述)。
3.2登录成功以后选择应用管理选项,点击添加应用按钮,自定义安装。
一般只需要填写应用名称、应用的主 URL、通信秘钥,然后选择开启同步登录和接收消息为是
3.4提交保存应用
4.第三方应用的配置
4.1添加配置文件
在主目录下添加配置文件,名称为config.properties,内容如下:
- #uc server url
- UC_API = http://localhost/uc
- #uc ip address
- UC_IP =
- #key通信秘钥
- UC_KEY = 12345
- #appid,UCenter中第三方应用的ID
- UC_APPID = 3
- #connect mode: default value is ""
- UC_CONNECT =
4.2配置web.xml
在web.xml中添加如下代码
Discuz论坛与第三方应用同步登录注册
4.3添加同步登录所需jar包jar包源码下载地址
4.4同步登录代码示例:
- Client e = new Client();
- String result = e.uc_user_login("username", "password");
- LinkedList rs = XMLHelper.uc_unserialize(result);
- if(rs.size()>0){
- int $uid = Integer.parseInt(rs.get(0));
- String $username = rs.get(1);
- String $password = rs.get(2);
- String $email = rs.get(3);
- if($uid > 0) {
- System.out.println("登录成功");
- System.out.println($username);
- System.out.println($password);
- System.out.println($email);
- String $ucsynlogin = e.uc_user_synlogin($uid);
- System.out.println("登录成功"+$ucsynlogin);
- //本地登陆代码 //TODO ... ....
- } else if($uid == -1) {
- System.out.println("用户不存在,或者被删除");
- } else if($uid == -2) {
- System.out.println("密码错");
- } else {
- System.out.println("未定义");
- } //开源软件:Vevb.com
- }else{
- System.out.println("Login failed"); System.out.println(result);
- }
4.5同步注册代码示例:
- String $returns = uc.uc_user_register(user.getUsername(), "***", user.getEmail());
- int $uid = Integer.parseInt($returns);
- if ($uid <= 0) {
- if ($uid == -1) {
- System.out.print("用户名不合法");
- } else if ($uid == -2) {
- System.out.print("包含要允许注册的词语");
- } else if ($uid == -3) {
- System.out.print("用户名已经存在");
- } else if ($uid == -4) {
- System.out.print("Email 格式有误");
- } else if ($uid == -5) {
- System.out.print("Email 不允许注册");
- } else if ($uid == -6) {
- System.out.print("该 Email 已经被注册");
- } else {
- System.out.print("未定义");
- }
- } else {
- System.out.println("OK:" + $returns);
- }
4.6登出代码示例:
- Client uc = new Client();
- //setcookie('Example_auth', '', -86400);
- //生成同步退出的代码
- String $ucsynlogout = uc.uc_user_synlogout();
- System.out.println("退出成功"+$ucsynlogout);
- if ($ucsynlogout != null) {
- HttpServletResponse res = getResponse();
- System.out.println($ucsynlogout);
- res.reset();
- res.setContentType("text/html");
- res.setCharacterEncoding("utf-8");
- res.getWriter().write("成功登出" + $ucsynlogout);
- return null;
- }
基本上Discuz论坛的同步登录注册和退出的功能就如上所述,有几点需要注意.
1,是在同步登录时返回的结果$ucsynlogin中,是一串包含两个script标签的字符串,需要先执行一下第一个script标签中的src之后才能同步登录成功,否则失败,原因是这段代码是为了向Discuz论坛里写入登录信息,至于以什么样的方式执行需要自己定义,我是直接解析到这段字符串到前台页面执行。
2,是同步注册后的用户并没有直接添加到用户表了,而是需要用新注册的用户登录一下论坛进行一下激活才能使用,可以通过修改UCenter的配置来解决这个问题,用管理员登录论坛进入管理中心选择站长选项,选择UCenter设置是否允许其他应用的会员在站点激活:和是否允许直接激活都选择是,然后提交就行。
3.UCenter提供了域名解析服务,可以添加域名解析,把域名解析成ip地址.
新闻热点
疑难解答