最近做了一个资源库系统的项目,老师说可以搭建开源论坛替代自己开发社交模块(评论啊,反馈啊)来减轻负担,甚至提到了要给每个资源开一帖的功能。。使我十分怀疑到底是减轻负担还是增加负担。。。不过怀疑归怀疑,虽然社交模块也可以自己做,但是还是比起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. 让CentOS能用yum自动安装rar和unrar

    目的:让CentOS能用yum自动安装rar和unrar 系统环境: CentOS 7.0 具体操作步骤如下: 1.编辑文件 编辑dag.repo文件,或者说是新建一个dag.repo文件. vi / ...

  2. Swift 性能探索和优化分析

    本文首发在 CSDN<程序员>杂志,订阅地址 http://dingyue.programmer.com.cn/. Apple 在推出 Swift 时就将其冠以先进,安全和高效的新一代编程 ...

  3. 谈谈JavaScript事件

    众所周知,web前端包含三个基本技术:html.css和javascript.三者融合,才让网页变得精彩纷呈!如今,web上的操作越来越趋于复杂,JavaScript事件在网页中也遍地开花,有时候也是 ...

  4. JavaBean之简单应用JSP页面

    JavaBean的属性可以是任意类型,并且一个JavaBean可以有多个属性.每个属性通常都需要具有相应的setter. getter方法,setter方法称为属性修改器,getter方法称为 属性访 ...

  5. Kill Session

    有时候创建索引或修改表字段时,会提示资源正忙,可以查出表对应的进程并kill掉 select l.session_id,o.owner,o.object_name from v$locked_obje ...

  6. C# 数据结构--单链表

    什么是单链表 这两天看到很多有关单链表的面试题,对单链表都不知道是啥的我.经过学习和整理来分享一下啥是单链表和单链表的一些基本使用方法.最后看些网上有关单链表的面试题代码实例. 啥是单链表? 单链表是 ...

  7. java新手笔记33 多线程、客户端、服务器

    1.Mouse package com.yfs.javase; public class Mouse { private int index = 1; private boolean isLive = ...

  8. Call C# code from C++

    Reference: https://support.microsoft.com/en-us/kb/828736 Calling C# .NET methods from unmanaged C/C+ ...

  9. CSDN 自动评论

    转载说明 本篇文章可能已经更新,最新文章请转:http://www.sollyu.com/csdn-auto-reviews/ 说明 当打开http://download.csdn.net/my/do ...

  10. MySQL的 inner join on 与 left join on

    WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接.INNER JOIN……ON子句产生的连接称为显性连接. inner join:理解为“有效连接”,两张表中都有的数据才会显示left ...