分享

分析ucenter和ecshop整合原理

 quasiceo 2014-05-05

分析ucenter和ecshop整合原理

时间:2010-12-08 10:39来源:www. 作者:admin 点击: 1024 QQ咨询qq:760868471淘宝旺旺咨询旺旺
昨天在做ecshop, ucenter , discuz 三者的整合.遇到的问题是从 论坛 可以同步 登陆 商城 ,而从商城不能同步登陆到论坛. 通过和晓天的沟通交流,我们发现uc的整合登陆非常之复杂.首先
  

   昨天在做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的调试也十分复杂,在这里也感谢晓天的支持和帮助,才能排除解决问题.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多