1.Discuz版本
我安裝的Discuz是目前比較新的3.2版本。安裝完以后UCenter已經(jīng)安裝好了。
2.第三方應(yīng)用站點
自己開發(fā)的簡單的web應(yīng)用平臺系統(tǒng)。
3.UCenter添加應(yīng)用
3.1進入UCenter,http://***:8088/bbs/uc_server,***代表UCenter所在服務(wù)器ip地址或者域名,Apache端口默認的是80,由于需要,我把端口改成了8088(修改方法會在別的博文中敘述)。
3.2登錄成功以后選擇應(yīng)用管理選項,點擊添加應(yīng)用按鈕,自定義安裝。
一般只需要填寫應(yīng)用名稱、應(yīng)用的主 URL、通信秘鑰,然后選擇開啟同步登錄和接收消息為是
3.4提交保存應(yīng)用
4.第三方應(yīng)用的配置
4.1添加配置文件
在主目錄下添加配置文件,名稱為config.properties,內(nèi)容如下:
- #uc server url
- UC_API = http://localhost/uc
- #uc ip address
- UC_IP =
- #key通信秘鑰
- UC_KEY = 12345
- #appid,UCenter中第三方應(yīng)用的ID
- UC_APPID = 3
- #connect mode: default value is ""
- UC_CONNECT =
4.2配置web.xml
在web.xml中添加如下代碼
Discuz論壇與第三方應(yīng)用同步登錄注冊
4.3添加同步登錄所需jar包jar包源碼下載地址
4.4同步登錄代碼示例:
- Client e = new Client();
- String result = e.uc_user_login("username", "password");
- LinkedList 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) {
- System.out.println("登錄成功");
- System.out.println($username);
- System.out.println($password);
- System.out.println($email);
- String $ucsynlogin = e.uc_user_synlogin($uid);
- System.out.println("登錄成功"+$ucsynlogin);
- //本地登陸代碼 //TODO ... ....
- } else if($uid == -1) {
- System.out.println("用戶不存在,或者被刪除");
- } else if($uid == -2) {
- System.out.println("密碼錯");
- } else {
- System.out.println("未定義");
- } //開源軟件:Vevb.com
- }else{
- System.out.println("Login failed"); System.out.println(result);
- }
4.5同步注冊代碼示例:
- String $returns = uc.uc_user_register(user.getUsername(), "***", user.getEmail());
- int $uid = Integer.parseInt($returns);
- if ($uid <= 0) {
- if ($uid == -1) {
- System.out.print("用戶名不合法");
- } else if ($uid == -2) {
- System.out.print("包含要允許注冊的詞語");
- } else if ($uid == -3) {
- System.out.print("用戶名已經(jīng)存在");
- } else if ($uid == -4) {
- System.out.print("Email 格式有誤");
- } else if ($uid == -5) {
- System.out.print("Email 不允許注冊");
- } else if ($uid == -6) {
- System.out.print("該 Email 已經(jīng)被注冊");
- } else {
- System.out.print("未定義");
- }
- } else {
- System.out.println("OK:" + $returns);
- }
4.6登出代碼示例:
- Client uc = new Client();
- //setcookie('Example_auth', '', -86400);
- //生成同步退出的代碼
- String $ucsynlogout = uc.uc_user_synlogout();
- System.out.println("退出成功"+$ucsynlogout);
- if ($ucsynlogout != null) {
- HttpServletResponse res = getResponse();
- System.out.println($ucsynlogout);
- res.reset();
- res.setContentType("text/html");
- res.setCharacterEncoding("utf-8");
- res.getWriter().write("成功登出" + $ucsynlogout);
- return null;
- }
基本上Discuz論壇的同步登錄注冊和退出的功能就如上所述,有幾點需要注意.
1,是在同步登錄時返回的結(jié)果$ucsynlogin中,是一串包含兩個script標(biāo)簽的字符串,需要先執(zhí)行一下第一個script標(biāo)簽中的src之后才能同步登錄成功,否則失敗,原因是這段代碼是為了向Discuz論壇里寫入登錄信息,至于以什么樣的方式執(zhí)行需要自己定義,我是直接解析到這段字符串到前臺頁面執(zhí)行。
2,是同步注冊后的用戶并沒有直接添加到用戶表了,而是需要用新注冊的用戶登錄一下論壇進行一下激活才能使用,可以通過修改UCenter的配置來解決這個問題,用管理員登錄論壇進入管理中心選擇站長選項,選擇UCenter設(shè)置是否允許其他應(yīng)用的會員在站點激活:和是否允許直接激活都選擇是,然后提交就行。
3.UCenter提供了域名解析服務(wù),可以添加域名解析,把域名解析成ip地址.
新聞熱點
疑難解答
圖片精選