需求分析:
要想实现A(jsp网站)和B(discuz论坛)的同步,这里说的同步指的是
- 在AB网站任意一方注册之后在另一方都可以直接登录
- AB两网站之间的用户登陆状态是同步的,在任意一方登录后,另一方也是登陆状态
- 在AB网站任意一方修改信息后,另一方同步修改
要想实现同步功能,可以利用官方提供的UCenter,其中心思想是提供一个第三方的服务,将AB网站的用户信息分别同步到第三方的UCenter中,在由UCenter负责更新AB网站的用户信息。
前期准备
- 在安装discuz的时候默认是安装UCenter的,如果没有的话可自行安装一个。
- 我这里的同步使用的是discuz-ucenter-api-for-java。下载地址:(需要FQ)。此网站中已有相关文档,说的很详细的。
实现过程:
配置discuz与UCenter之间的通信。
这种配置很简单,discuz官方论坛上的说明也很多,这个不是我们今天的重点,不会的可以去官方论坛搜搜。需要说明的是在安装discuz的时候,安装路径一定不能使用大写字母,如果使用的话,会导致UCenter路径不对无法访问的情况,在解析url的时候将大写转成了小写,肯定找不到路径的。血与泪的经验教训。。。。。
添加UCenter的应用
在UCenter的应用管理中,添加新的应用。
其中应用的主URL就是你jsp网站的地址。
通信密钥自己任意写
应用接口文件名称不要动
添加完成后会提示通信失败,那是当然的,咱还没有配置jsp网站与UC的通信。
配置jsp网站与UCenter之间的通信
下载到discuz-ucenter-api-for-java后有几个需要修改的地方,其官方文档也有说明
config.properties文件:
#你自己的UCenter的地址。不会填的可参照discuz中的“UCenter设置” UC_API =www.abc.com/discuz/uc_server
#uc的ip地址,可以不填 UC_IP = 127.0.0.1 #key,密钥,必须和UCenter中的一样 UC_KEY = qazxsw123654 #appid ,UCenter中应用的id号 UC_APPID = 2 #connect mode: default value is "" UC_CONNECT =
这样配置之后,其他使用api的默认设置就可以进行测试啦
在下载的api中提供了test.java,包含测试注册用户,注销用户,用户登录三个功能。在Jsp_demo.jsp页面中提供的是用户登录测试。
需要注意的问题是:
中文名登陆不了的,请将URLEncode.encode(str) 为 URLEncode.encode(str,"GBK")