Java通过UCenter实现Discuz同步登录

该博客正在编辑中...预计一周内完成

前言

discuz_ucenter_api_for_java针对UCenter1.5/1.6版本均可正常通信,测试过程中,Discuz X2.5/X3.0/X3.2均测试通过。在开始前,有几个点需要先了解。

  1. Discuz和UCenter是两个相对独立的应用系统,只是一般在安装Discuz的时候集成安装了UCenter。

  2. Discuz和UCenter分别有各自独立的用户数据表,Discuz的是`数据库名`.[前缀]_common_member,Ucenter的是`数据库名`.[前缀]_ucenter_members

  3. UCenter是一个统一的用户管理中心,是Comsenz旗下各个产品(Discuz、X-Space、SuperSite等)之间信息直接传递的一个桥梁,通过UCenter 站长可以无缝整合Comsenz系列产品,实现用户的一站式登录以及社区其他数据的交互。

  4. 在Discuz中注册用户,Discuz会将用户同步到UCenter中。在UCenter中注册了用户,不会同步到Discuz。

搭建Discuz环境

从Discuz官网下载安装Discuz程序,安装过程略。其中数据库名和表名前缀需要记住,在后面创建Ucenter用户时同步Discuz用户时要用到。

UCenter中注册应用

UCenter登录没反应?

我遇到过这个问题,不管是Discuz X2.5还是X3,安装好Discuz后,正确输入了创使人密码,但是提交后一直没有反应,可以编辑uc_server/model/admin.php,找到约第22行的

$this->cookie_status = 0;

改成

$this->cookie_status = isset($_COOKIE['sid']) ? 1 : 0;

如果你可以正常登录UCenter,就不用管这个问题了。

从Discuz进入UCenter,在UCenter中的应用管理添加新应用

Java通过UCenter实现Discuz同步登录_第1张图片

添加新应用中录入以下相关参数(其它的默认,不用管):

  • 应用类型:其它

  • 应用名称:自定义

  • 应用主url:Java Web应用的访问地址,http://[ip]:[port]/[appname] ,如我在本地Tomcat部署上部署了一个应用,访问地址是:http://192.168.203.128:8080/dzclient4j,注意结尾不要添加“/”(斜杠)

  • 通信密钥:自定义,用于UCenter和Java Web程序约定的通信密钥,之后会在Java Web应用中配置同样的密钥。如“java_ucenter”

  • 是否开启同步登录:是

  • 是否接收通知:建议选“是”

添加成功后,会查看到刚刚添加的应用的ID,这个应用ID待会儿我们会用到。同时看到通信情况为通信失败,这个暂时不用管。

Java通过UCenter实现Discuz同步登录_第2张图片

接下来,我们要将要配置我们的WEB程序,在配置WEB程序之前我们先要确认一下UCenter的地址:

Java通过UCenter实现Discuz同步登录_第3张图片

因为有的地址是IP配置的,有的地址是域名配置的,所以确认一下以保证之后的配置的一致性。

配置Java Web应用

下载discuz_ucenter_api_for_java应用程序。

将src下的代码复制到本地WEB应用的src下,修改复制过来的config.properties

#UCenterf地址
UC_API = http\://192.168.203.1/bbs/uc_server
#UCenter的IP,可为空
UC_IP =
#通信秘钥,与在UCenter注册的通信秘钥一致
UC_KEY = java_ucenter
#应用ID,在UCenter注册应用生成的ID
UC_APPID = 2
#该项可为空
UC_CONNECT =

在本地WEB应用的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>

接下来,我们启动JAVA WEB应用程序,再回到UCenter的应用列表,会发现通信情况已经变成了通信成功

你可能感兴趣的:(java,discuz,ucenter)