为了丰富员工业余生活,增多交流机会,于是在公司搭建了论坛方便大家灌水,目前公司中企业级应用是基于JAVAEE的产品,论坛选用了比较受欢迎的Discuz 3.2, 为了避免二次登陆使用单点登陆解决,虽然查找了各种资料做集成,但是其中还是遇到了些问题,翻墙发现了: discuz-ucenter-api-for-java 因为被墙,在国内无法访问code.google.com,已将测试代码做了部分调整上传至GitHub: https://github.com/yaonew/discuz-ucenter_api_for_java
第一步配置config.properties※
UC_API = http://你的discuz地址/uc_server 如http://localhost/bbs/uc_server
UC_IP = 正常情况下留空即可
UC_KEY = N3M117R45aWfqfe4xcu0OfTcAT3r4K6f2KRoUOFYT(与ucenter通信的密钥,这里自己设定,需与discuz ucenter 一致)
UC_APPID = 2 //appID为UCenter中应用管理中的ID,见UCenter设置
UC_CONNECT = 正常情况下留空即可
第二步 配置web.xml,添加如下※
<servlet>
<servlet-name>api</servlet-name>
<servlet-class>com.fivestars.interfaces.bbs.api.UC</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>api</servlet-name>
<url-pattern>/api/uc.php</url-pattern>
</servlet-mapping>
第三步 配置ucenter※
管理员登陆UCenter : http://localhost/bbs/uc_server 应用管理-> 添加应用, 这边添加的应用ID,通信秘钥与第一步的配置保持一致


配置完成,看到通信成功的信息,表示ucenter集成配置OK

第四步 访问测试页※
<%@page import="java.util.LinkedList"%>
<%@page import="com.fivestars.interfaces.bbs.util.XMLHelper"%>
<%@page import="com.fivestars.interfaces.bbs.client.Client"%>
<%
Client uc = new Client();
//String result1 = uc.uc_user_register("test3", "test3", "test3@huaqi.info");
//out.println("xxx" + result1);
String result = uc.uc_user_login("test3", "test3");
LinkedList<String> 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) {
response.addHeader("P3P"," CP=\"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR\"");
out.println("登录成功");
out.println($username);
out.println($password);
out.println($email);
String $ucsynlogin = uc.uc_user_synlogin($uid);
out.println("登录成功"+$ucsynlogin);
//本地登陆代码
//TODO ... ....
Cookie auth = new Cookie("auth", uc.uc_authcode($password+"\t"+$uid, "ENCODE"));
auth.setMaxAge(31536000);
//auth.setDomain("localhost");
response.addCookie(auth);
Cookie user = new Cookie("uchome_loginuser", $username);
response.addCookie(user);
} else if($uid == -1) {
out.println("用户不存在,或者被删除");
} else if($uid == -2) {
out.println("密码错");
} else {
out.println("未定义");
}
}else{
out.println("Login failed");
System.out.println(result);
}
%>
访问页面返回一段js: 登录成功 test3 test3 test3@huaqi.info 登录成功
<script type="text/javascript" src="http://localhost/api/uc.php?time=1474188863&code=6dfdhvNXKRoUOFYTR3Jn3ORQ2LKDd6cI6X5p4RD3yxyh6gy3%2F%2FQAJ5u8URp7qR%2F%2F0jaIoha2g4MnGRtosanyDihDy%2BIyW0zNNAnjkGHoaC1uyga5U2py%2F6%2F4uolQKBJaVI%2FMsM%2BuFUlttWcSmS7mzQoN%2Be0tzvPFZg2Y" reload=“1”</script>
在浏览器中执行后访问 discus已保持登陆状态!