discuz Ucenter第三方双向同步登录

今天按照官网的例子

把ucenter弄下来了,直接用官网的例子,用户注册登录的什么都好使。就是不不能同步登录。

研究了好久才发现  Ucenter_client的注册用户只增加在 pre_ucenter_members 表的的,所以你用ucenter的登录接口可以登录成功,但是 .$ucsynlogin  这个是返回空的,正常应该返回一串javascript来设置cookies,这样discuz也就自动同步登录的。

用接口注册的用户,你去discuz用户管理哪里是看不到的,这个时候新增一个同名的却发现用户已经存在了,提示激活即可。一点激活了,再看看  $ucsynlogin ,丫的这个时候才有代码返回了。。。

所以在第三方应用同步用户的页面

uc_clientmodeluser.php 的 add_user 函数 的return前增加以下这个激活用户的语句

//begin
$this->db->query("INSERT INTO `discuz_x2`.discuz_common_member SET uid='$uid', username='$username', password='$password', email='$email', adminid='0', groupid='10', regdate='".$this->base->time."', credits='0', timeoffset='9999'");
$this->db->query("INSERT INTO `discuz_x2`.discuz_common_member_status SET uid='$uid', regip='$regip', lastip='$regip', lastvisit='".$this->base->time."', lastactivity='".$this->base->time."', lastpost='0', lastsendmail='0'");
$this->db->query("INSERT INTO `discuz_x2`.discuz_common_member_profile SET uid='$uid'");
$this->db->query("INSERT INTO `discuz_x2`.discuz_common_member_field_forum SET uid='$uid'");
$this->db->query("INSERT INTO `discuz_x2`.discuz_common_member_field_home SET uid='$uid'");
$this->db->query("INSERT INTO `discuz_x2`.discuz_common_member_count SET uid='$uid', extcredits1='0', extcredits2='0', extcredits3='0', extcredits4='0', extcredits5='0', extcredits6='0', extcredits7='0', extcredits8='0'");
//end

  

原文地址:https://www.cnblogs.com/lmoonx/p/7010336.html