1.下载
Discuz下载:官网
Discuz-api-for-java下载:蓝奏云
2.配置
1.登录ucenter后台,应用管理,新建一个应用。
以上配置uCenter如果能访问到 http://172.16.22.103:13000/api/uc.php,就会显示 通信成功
2.修改Java配置
运行testLogin()方法,如果不出意外会得到一个js代码,例:
这个代码输出到浏览器,就能实现同步登录效果。
3.修改Discuz代码,实现免激活登录
前提是在我们自己的系统上进行注册、登录。然后对接uCenter
在注册新用户后,调用登录方法,并没有同步,但是,如果再一次,从论坛登录,激活用户。第二次再从Java端登录。就可以实现同步了。这一步就称为手动激活账号。
找到Discuz中的api/uc.php代码,将synlogin函数覆盖
function synlogin($get, $post) {
global $_G;
if(!API_SYNLOGIN) {
return API_RETURN_FORBIDDEN;
}
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
$cookietime = 31536000;
$uid = intval($get['uid']);
// if(($member = getuserbyuid($uid, 1))) {
// dsetcookie('auth', authcode("{$member['password']}t{$member['uid']}", 'ENCODE'), $cookietime);
// }
if(($member = getuserbyuid($uid, 1))) {
dsetcookie('auth', authcode("$member[password]t$member[uid]", 'ENCODE'), $cookietime);
} else {
if(!function_exists('uc_get_user')) {
loaducenter();
}
$user = uc_get_user($uid, 1);
if($user) {
$time = time();
DB::query("REPLACE INTO ultrax.pre_common_member SET `uid`='{$user[0]}' , `username`='{$user[1]}' , `password`='".md5(random (10))."' , `email`='{$user[2]}' , `adminid`='0' , `groupid`='10' , `regdate`='{$time}' , `emailstatus`='0' , `credits`='0' , `timeoffset`='9999'");
DB::query("REPLACE INTO ultrax.pre_common_member_status SET `uid`='{$user[0]}' , `regip`='{$_G['clientip']}' , `lastip`='{$_G['clientip']}' , `lastvisit`='{$time}' , `lastactivity`='' , `lastpost`='0' , `lastsendmail`='0'");
DB::query("REPLACE INTO ultrax.pre_common_member_count SET `uid`='{$user[0]}' , `extcredits1`='0' , `extcredits2`='0' , `extcredits3`='0' , `extcredits4`='0' , `extcredits5`='0' , `extcredits6`='0' , `extcredits7`='0' , `extcredits8`='0'");
DB::query("REPLACE INTO ultrax.pre_common_member_profile SET `uid`='{$user[0]}'");
DB::query("REPLACE INTO ultrax.pre_common_member_field_forum SET `uid`='{$user[0]}'");
DB::query("REPLACE INTO ultrax.pre_common_member_field_home SET `uid`='{$user[0]}'");
DB::query("UPDATE ultrax.pre_common_stat SET `register`=`register`+1 WHERE `daytime` = '".date('Ymd', $time)."'");
if(($member = getuserbyuid($uid, 1))) {
dsetcookie('auth', authcode("$member[password]t$member[uid]", 'ENCODE'), $cookietime);
}
}
}
}
重要:请确保你的数据库表名与代码中的一致!
修改完成后,就实现了免激活登录。