分析ucenter和ecshop整合原理
2010-12-08 10:39 来源:www.chinab4c.com 作者:admin
昨天在做ecshop,ucenter,discuz三者的整合.遇到的问题是从论坛可以同步登陆商城,而从商城不能同步登陆到论坛.
通过和晓天的沟通交流,我们发现uc的整合登陆非常之复杂.首先,ecshop不能同步登陆论坛,很可能是因为缓存造成的。我们清楚缓存之后,发现了shop_config表中的integrate_code字段值还是为
ecshop.整合了ucenter应该是integrate_code的值为ucenter;这个时候,更新缓存也没用。必须手动强制修改.
ucenter支持ecshop同步登陆的接口在includes\modules\integrates目录的ucenter里面,他的login()方法里面有个 $this->ucdata = uc_call("uc_user_synlogin", array($uid));,这里的ucdata
数据是非常重要的,是提供和ucenter整合所有的应用的集合.通过uc_client里面的uc_user_synlogin方式返回,他最终是调用user.php控制层的**ynlogin() 处理,返回一个<script
type="text/javascript" src="'.$app['url'].'/api/uc.php?time='.$this->time.'&code='.urlencode($this->authcode('action=synlogin&username='.$this->user['username'].'&uid='.$this-
>user['uid'].'&password='.$this->user['password']."&time=".$this->time, 'ENCODE', $app['authkey'])).'"></script>
格式的数组.这个东西非常重要,也是实现同步登陆关键的js格式接口。
说到这里,我们应该很清楚。如果你是通过post直接from登陆的话。你可以查看原代码。可以看到该数据.如果整合了3个应用。那么最少有三条js格式的src接口文件地址.我的情况是在ecshop下登
陆,同步不到论坛登陆。查看代码,发现指向bbs的哪个src路径为空。
这个时候进行了ucenter的细调,发现在ucenter缓存下的东西data/cache/apps.php里面的应用少了,这个时候更新ucenter的缓存.发现恢复正常.
但是在ajax下,然后进行跳转的方式登陆.也很难同步.原因很简单.ajax登陆.他返回
$ucdata = empty($user->ucdata)? "" : $user->ucdata;
$result['ucdata'] = $ucdata;
然后通过json.发送到js.所以发送到js的evalscript(res.ucdata);方式。其实就是执行同步登陆的过程,这里要注意。如果登陆停留时间太短,而且来不及执行该js.论坛也不能实现同步登陆。这个
时候,我们必须将跳转的时间设置长一些.
通常的post的form表单登陆方式,我们也可以观察下,show_message($_LANG['login_success'] . $ucdata , array($_LANG['back_up_page'], $_LANG['profile_lnk']), array($back_act,'user.php'), 'info');这里面的$ucdata就是执行那js的。呵呵。如果少了这个。肯定是不能同步登陆
uc的调试也十分复杂,在这里也感谢晓天的支持和帮助,才能排除解决问题.
来源:http://www.chinab4c.com
最近更新
常用插件
- ecshop通用红包编码
很多时候,为了结合促销,必须扩展一下ecshop的红包功能。ecshop的红包...
- ecshop降价通知登记插件
ecshop降价通知登记插件,主要是为了方便某些客户,对商品价格要求比...
- ecshop分类树中统计商品数
最近忙于开发其他项目,在不少朋友不断要求和催促的情况下,做出了该小...
- ecshop红包修改成满多少减
我们在长期使用ecshop的时候,我们可以发现。ecshop的红包是一个非常强...
- ecshop购物车功能改进[插件
ecshop购物车功能改进[插件套餐]主要是我们最近开发工作和开发项目中。...