UCenter整合自有系统同步登陆的注意点
UCenter的同步登陆整合确实是问题多多,我也是整得焦头烂额,简单记录一下整合的注意点:
1、第一步要做的是在UCenter中检查通信是否正常
如通信不成功的话检查App URL、App IP、APP Key等是否与自有系统的配置保持一直。当UCenter和自有系统位于同一台服务器时,最好配置Physical Path,有时通信失败的情况就能解决了。
2、根据UCenter的API开发手册,调用同步登陆函数
$ucsynlogin = uc_user_synlogin($uid); if ($uid > 0) { $ucsynlogin = uc_user_synlogin($uid); echo $ucsynlogin; } else { echo "log in failed"; }
这里需要说明的是必须将 uc_user_synlogin函数的返回结果输出到页面上,因为动态输出的script是来通知其他程序进行同步登陆操作的。具体的输出内容类似如下
<script reload="1" src="http ://localhost/forum/api/uc.php?time= 1277732174&code=624eq%2BpLco%2B8b4%2FwHM8wFYiGNx Ps50WiRbclWSf19LUBw MWdRLX2d9Z1JK9Yto7P4P L86RSeuOaGb2aQ1YgGNp hFy4mjhmVvklWoZWfO6 431JqGFmGzZWwn8GO oj%2FRREi9gcQ%2FCk6uoWw WbfiDOnTqhZLq1Gvhx2 L6Y7vz3H" type="text/javascript"></script>
特别强调一点,如果采用的是Ajax方式异步登陆的话,需要注意让以上输出的script生效,因为如果是使用innerHTML把以上代码加载到页面上的话,同步登陆会失效的,深刻体会。
3、额外,注意一下自有系统的类名和ucenter中的类名是否有存在重复的情况,曾碰到过,比较杯具
标签: UCenter
我想说的是:
为什么一定要那个script生效。由于http是无状态协议,而cookie又不能跨域传输,所以要异步请求其它应用,以获取其它应用的登陆信息,即cookie.
[回复]
晴枫 12月 4th, 2012 上午12:44 回复:
@小天, script标签加载相当于向另一个域发起了请求
[回复]
你好,否能做个友情链接呢?
[回复]
晴枫 7月 1st, 2010 下午9:51 回复:
@lianyungang, 只加同类博客或技术站点
[回复]
呵呵,你也玩康盛的产品?
[回复]
晴枫 6月 28th, 2010 下午10:23 回复:
@shy9000, 实战中用到UCHome、Discuz、UCenter,其他的也没玩过
[回复]
shy9000 6月 28th, 2010 下午10:24 回复:
@晴枫,
呵呵,新出了一个X1,不过感觉累赘太多了…
[回复]
晴枫 6月 28th, 2010 下午10:29 回复:
@shy9000, 看介绍怎么感觉帮UCenter的定位有点像,也是做整合的,只不过X整合用户体验
supersite你感觉怎么样 一直没怎么接触cms这块
[回复]
shy9000 6月 28th, 2010 下午10:31 回复:
@晴枫, Supesite没用过,不敢乱作评价.
其他的产品和你一样,都研究过,呵呵.
[回复]