解决ShopEx云登录 登录成功后返回无反应错误的方法
云登录返回时ShopEx系统会调用core\shop\controller\ctl.passport.php下的方法other_login_verify代码如下
function other_login_verify(){
$sign = $_GET['sign'];
unset($_GET['passport-other_login_verify_html']);
unset($_GET['passport-1-other_login_verify_html']);
unset($_GET['sign']);
$make_sign = $this->get_ce_sign($_GET,$this-&system->getConf('certificate.token'));
if($make_sign!=$sign){
echo "sign is error";
exit;
}
$account = $this-&system->loadModel('member/account');
//查询sdb_trust_login是否之前登录过,首次登录会插入会员信息,不是首次就读取
$result_m = $account->createotherlogin($_GET);
if($result_m['redirect_url']){
echo ""; exit; }else{ echo ""; } }
程序流程是先检查sdb_trust_login表,如果没有用户信息说明是第一次登录,系统就会读取系统后台设置默认的会员信息,比如等级、默认货币单位等等,然后结合信任登录返回会员信息(如昵称、邮箱信息等等)一起在sdb_members表里生成新的一条会员记录。如果有用户信息说明不是第一次登录,系统会读取之前导入的会员记录。
问题出在如果你删除了信任登录会员,这里的删除指的是永久删除,由于程序bug,sdb_trust_login表的信息没有被一起删除,如果被删除会员下次又用登录,系统会认为该会员不是第一次登录,直接读取已经被删除不存在的会员信息,就会出现,云登录成功返回后,会员没有登录网站的尴尬。
解决方法,找到sdb_members表中删除云登录会员的id,然后删除sdb_trust_login表内对应的信息即可。
不过我建议不要删除云登录,信任登录的会员信息,以免有不必要的麻烦。