最近做了一个资源库系统的项目,老师说可以搭建开源论坛替代自己开发社交模块(评论啊,反馈啊)来减轻负担,甚至提到了要给每个资源开一帖的功能。。使我十分怀疑到底是减轻负担还是增加负担。。。不过怀疑归怀疑,虽然社交模块也可以自己做,但是还是比起discuz这种专业论坛还是差很多啊。

  正好在开源中国上看到了一个利用discuz的UCenter功能实现同步登录的开源项目(https://code.google.com/p/discuz-ucenter-api-for-java/),不禁大喜,于是花了几个小时照着教程操作了一遍,居然很轻松的成功了,特写此文以做纪念。。

Uenter是Comsenz旗下各个产品之间信息直接传递的一个桥梁,通过UCenter站长可以无缝整合Comsenz系列产品,实现用户的一站式注册、登录、退出。UCenter可以让Comsenz旗下所有产品联系地更加紧密,实现用户的统一注册登录,让社区真正运转起来。 UCenter拥有机制完善的接口,经过简单修改便可以挂接其它任何平台的第三方的网络应用程序。UCenter作为信息传统桥梁,拥有统一的短信息、好友机制,最终用户可以通过它轻松通行在各个应用之中,无需重复登录、注册、退出。统一的标签(TAG)机制,将社区中各个应用紧密连接,用户可以在社区里面进行自由穿梭,快速找到所需的应用,获得最佳的使用体验。

首先,第一步,安装好apache和php,参照此博客:http://www.cnblogs.com/pharen/archive/2012/02/06/2340628.html

我的版本为php-5.4.23-Win32-VC9-x86和httpd-2.2.25-win32-x86-openssl-0.9.8y

基本上没有遇到什么特别的问题,除了因为php和apache的版本不配套耽误了点时间,其余基本顺利。

如果php里面是2_4,则需要下载一个低版本的php,否则会导致apache服务器无法正常解析php文件。

第二步,安装discuz,我安装的版本是Discuz_X3.1_SC_UTF8.zip。安装的时候勾选全新安装会顺便安装UCenter,如果没有安装的话就需要自己下载安装了,版本为UCenter1.5+

第三步,开始配置UCenter服务器端(就是UCenter安装的那个程序)

如图:

第三步,配置我们自己的程序,也就是客户端。

  1.拷贝开源项目里的jar包https://code.google.com/p/discuz-ucenter-api-for-java/downloads/list(拷贝jar包可能出现类路径错误,可以直接下载源码拷到自己的项目中)

  2.配置一个用于与UCenter对接的servlet

<servlet>
<servlet-name>connect_discuz</servlet-name>
<servlet-class>com.fivestars.interfaces.bbs.api.UC</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>connect_discuz</servlet-name>
<url-pattern>/api/uc.php</url-pattern>
</servlet-mapping>

  

  3.把配置文件(config.properties)复制到src目录下

 #
# ================================================
# * Discuz! Ucenter API for JAVA
# ================================================
# UC comunication settings
#
#
#uc server url如果是全新安装的模式,ucenter可以随discuz一起安装,路径是
UC_API = http://{discuz根目录}/uc_server
#uc ip address
UC_IP = 127.0.0.1 #key
UC_KEY = yunstudio #appid
UC_APPID = 2 #connect mode: default value is ""
UC_CONNECT =

  4.把开源项目中的demo(Jsp_demo.jsp)复制到应用的根目录中。原来作者的jsp文件编码和文件头都有点小问题,所以我稍微的修改了一下。

<%
/**
* ================================================
* Discuz! Ucenter API for JAVA
* ================================================
* JSP 调用示例
*
* 更多信息:http://code.google.com/p/discuz-ucenter-api-for-java/
* 作者:梁平 (no_ten@163.com)
* 创建时间:2009-2-20
*/
%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.fivestars.interfaces.bbs.util.XMLHelper"%>
<%@ page import="com.fivestars.interfaces.bbs.client.Client"%>
<%
Client uc = new Client();
String result = uc.uc_user_login("admin", "yun"); 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);
}
%>

  

如果例子能运行起来,那么注册登出什么的就可以直接看官网上的代码看懂了,很简单的。

利用开源项目使discus论坛与java应用同步登录和注册的更多相关文章

  1. 利用开源项目jadx反编译Android应用

    原文转自:http://bbs.itheima.com/thread-200475-1-1.html 利用开源项目jadx反编译Android应用 利用Github开源项目jadx可以直接对 .dex ...

  2. 【Github开源项目体验】- ZFile 基于 Java 的在线网盘

    [Github开源项目体验]- ZFile 基于 Java 的在线网盘 在线云盘.网盘.OneDrive.云存储.私有云.对象存储.h5ai.上传.下载 date: 2022-08-02 addres ...

  3. 开源项目几点心得,Java架构必会几大技术点

    关于学习架构,必须会的几点技术 1. java反射技术     2. xml文件处理     3. properties属性文件处理     4. 线程安全机制     5. annocation注解 ...

  4. 利用开源项目 FFMpegSharp 实现音视频提取、转码、抓图等操作

    开源项目地址:https://github.com/vladjerca/FFMpegSharp 首先需要在 web.config 或 app.config 中配置 <appSettings> ...

  5. 用java集合模拟登录和注册功能

    package com.linkage.login; import java.util.HashMap;import java.util.Iterator;import java.util.Map;i ...

  6. 用java数组模拟登录和注册功能

    package com.linkage.login; import java.util.Scanner; public class user { // 存储用户名和密码 public static S ...

  7. 开源项目|Go 开发的一款分布式唯一 ID 生成系统

    原文连接: 开源项目|Go 开发的一款分布式唯一 ID 生成系统 今天跟大家介绍一个开源项目:id-maker,主要功能是用来在分布式环境下生成唯一 ID.上周停更了一周,也是用来开发和测试这个项目的 ...

  8. Android 开源项目 eoe 社区 Android 客户端(转)

    本文内容 环境 开源项目 eoe 社区 Android 客户端 本文介绍 eoe 社区 Android 客户端.它是一个开源项目,功能相对简单,采用侧边菜单栏.可以学习一下.点击此处查看 GitHub ...

  9. Android 开源项目 eoe 社区 Android 客户端

    本文内容 环境 开源项目 eoe 社区 Android 客户端 本文介绍 eoe 社区 Android 客户端.它是一个开源项目,功能相对简单,采用侧边菜单栏.可以学习一下.点击此处查看 GitHub ...

随机推荐

  1. UML-用例

  2. SQLserver的存储过程

    存储过程 [Create是创建存储过程,alter是更改.改变存储过程] [在第一次写存储过程时用create,若修改存储过程程序之后,则alter替换create再执行] [在数据库中begin   ...

  3. 了解下SoftReference

    昨天同事看到别人一段关于实现缓存功能的代码,看完之后他有点不明觉厉,哈哈,然后就给周围同事也看了下,可能之前大家都没用过SoftReference,所以并不明白是如何实现的. 于是我就把代码要了过来, ...

  4. Python Quick Start

    1.安装Python 官网下载python: https://www.python.org/ 有2.x 3.x版本, 注意,python3.0不向下兼容2.x版本,有很多包3.0不提供 下载完后直接点 ...

  5. ASP.NET MVC 路由进阶(之一)

    1.  MVC框架下的WebForm页面. 我们在MVC项目下新建一个WebForm页面. 然后右键浏览,打开页面,如下图: 发现页面能够正常访问.ok,我们尝试改一下Global.asax.cs中的 ...

  6. SQL语句基本概念

    星期五 2014年11月21日 SQL语句:     sql语句用于检索维护数据库中的数据                   [ create alter Select update        ...

  7. 1_jz2440在linux下烧写裸机程序

    常用的烧写方法有: 1.使用并口工具烧写:接线(参考百问网JZ2440V2开发板使用手册),使用oflash烧写(速度比较慢),可烧写.bin文件,从新上电观察效果.可烧写u_boot. 2.使用op ...

  8. PHP文件操作

    1.递归获取目录下文件的个数 function getFileCount($dir){ if(!is_dir($dir)) return false; //打开目录 $handle = opendir ...

  9. 支持 IE8 IE11 和 FF, Chrome 浏览器的圆角

    .rounded-corners { position: relative behavior: url(/Styles/PIE.htc); //这里一定是“/”根目录 border-radius: 2 ...

  10. js 闭包 详解

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 闭包的特性 闭包有三个特性: 1.函数嵌套函数 2.函数内部可以引用外部的参数和变量 3.参数 ...