ucenter及discuz整合,双向同步注册及登录注意事项2016年9月13
如果遇到接口调试问题,可以参考我的其它教程.
http://blog.csdn.net/viqecel/article/details/52492081
http://blog.csdn.net/viqecel/article/details/52485774
后台修改方法
注意
所有涉及文件修改的,不管什么结尾的,只要是文本类的文件,都需要用专业的编程软件打开.比如notepad++ 工具.
否则,会导致网站错位,乱码等,因为会产生bom头问题.具体可以搜索下
一,先进论坛后台,站长,ucenter设置,选择允许直接激活
二,进ucenter ,应用管理,新建立应用.类型选其它,名称填book,主url填你的网站主页网址.比如http://123.com
通信密钥随便填一个密码,最下面同步登录填是.其它不用填,保存.
三,修改要整合的第三方应用网站的数据库配置.方便从第三方网站上,同步插入会员数据到ucenter中.
有些可能需要在后台配置,或直接修改文件,要具体分析.
这个文件里面的内容.其实就是ucenter后台,book应用,编辑后,拉到最下面,看到配置信息,把他全部复制后,填在uc.php中的对应位置,保存,上传,替换原文件即可..
四,去论坛的安装目录中,找uc_client/data/cache/apps.php 打开,里面有你uc后台的所有应用,如果没有.说明不正常.把里面所有内容.复制,填到book网站对应的uc_clientdatacacheapps.php中,保存上传
这两个文件要一致,才能同步.
五,实现论坛上注册会员后,直接在所有应用中自动登录,而不必登录,再登录一次才同步.
方法
修改论坛目录中对应的,uc_clientmodeluser.php 中的function add_user 函数
把大约131行的
$salt = substr(uniqid(rand()), -6);
整体替换为
$salt = substr(uniqid(rand()), -6);
$password2 = md5($password);
然后,在return $uid;
的上面增加下面这段代码
$time2=date("Y-m-d H:i:s",$this->base->time);
$this->db->query("INSERT INTO admin_book.hbdx_users SET uc_id="$uid",user_mail="$email",user_name="$username",user_group="同步注册会员",user_displayname="$username",registerdate="$time2",user_pass="$password2",user_integration="10"");
/////注意,其中,admin_book 表示book网站对应的数据库名,hbdx_users 表示表名,可以相应修改为正在使用的.
六,同时,修改论坛目录中的.
sourceclassclass_member.php
找到大约926行的
$extra = array(
"showid" => "succeedmessage",
"extrajs" => "<script type="text/javascript">".
"setTimeout("window.location.href ="".$href."";", 3000);".
"$("succeedmessage_href").href = "".$href."";".
"$("main_message").style.display = "none";".
"$("main_succeed").style.display = "";".
"$("succeedlocation").innerHTML = "".lang("message", $locationmessage)."";".
"</script>",
"striptags" => false,
);
整体替换为
$ucsynlogin = "";
if($_G["setting"]["allowsynlogin"]) {
loaducenter();
$ucsynlogin = uc_user_synlogin($_G["uid"]);
}
$extra = array(
"showid" => "succeedmessage",
"extrajs" => "<script type="text/javascript">".
"setTimeout("window.location.href ="".$href."";", ".$refreshtime.");".
"$("succeedmessage_href").href = "".$href."";".
"$("main_message").style.display = "none";".
"$("main_succeed").style.display = "";".
"$("succeedlocation").innerHTML = "".lang("message", $locationmessage)."";".
"</script>".$ucsynlogin,
"striptags" => false,
);
//其实主要是在后面增加了这一句
//.$ucsynlogin ,从而实现论坛上初次注册的会员,就可以直接同步到另一站,不需要退出再登录一次.
七,如果论坛中已经存在以前注册的用户,如果他论坛上登录后,想同步注册到本站,则还需要在论坛目录中,增加个email参数.这样,本应用的api/uc.php中就能得到这个参数.
具体为
uc_servercontroluser.php,要修改本文件的onsynlogin()
下面这个函数直接替换原来的就行.里面增加了email
function onsynlogin() {
$this->init_input();
$uid = $this->input("uid");
if($this->app["synlogin"]) {
if($this->user = $_ENV["user"]->get_user_by_uid($uid)) {
$synstr = "";
foreach($this->cache["apps"] as $appid => $app) {
if($app["synlogin"]) {
if($app["appid"] != $this->app["appid"]) {
$synstr .= "<script type="text/javascript" src="".$app["url"]."/api/".$app["apifilename"]."?time=".$this->time."&code=".urlencode($this->authcode("action=synlogin&username=".$this->user["username"]."&uid=".$this->user["uid"]."&email=".$this->user["email"]
."&password=".$this->user["password"]."&time=".$this->time,"ENCODE", $app["authkey"]))."" reload="1"></script>";
}
if(is_array($app["extra"]["extraurl"])) foreach($app["extra"]["extraurl"] as $extraurl) {
$synstr .= "<script type="text/javascript" src="".$extraurl."/api/".$app["apifilename"]."?time=".$this->time."&code=".urlencode($this->authcode("action=synlogin&username=".$this->user["username"]."&uid=".$this->user["uid"]."&email=".$this->user["email"]."&password=".$this->user["password"]."&time=".$this->time,"ENCODE",
$app["authkey"]))."" reload="1"></script>";
}
}
}
return $synstr;
}
}
return "";
}
//函数结束