UCenter uc_user_synlogin同步登陆返回值为空(NULL)的解决办法 及 ucenter原理
第一种方法
最近刚刚接触UCenter,很多问题不是很理解,只是在摸索着、尝试着做,就在刚才有解决了一个问题,虽然不知道解决问题的具体原理,但是还是实现了同步登陆。
首先我是在本地测试的,也就是localhost,用uc_user_synlogin会返回一段html代码,这段代码就是实现同步登陆的关键,但是我试了一下,并没有同步成功,具体查看返回的html代码,结果是空的,后来网上找了很多解决方法都没有能解决我的问题,最后无意中我把程序的UCenter程序配置文件中的
define('UC_API', 'http://localhost/ucenter');
修改为了
define('UC_API', 'http://127.0.0.1/ucenter');
结果就登陆成功了,虽然不知道解决的具体原因,但是希望能帮助和我一样刚刚接触UCenter的朋友
第二种方法:如果以上方法还是无法帮助你解决问题的话,你可以尝试一下下面的方法:
研读过ucenter 的原理后,再结合测试 ucenter + modoer + discuz X 1.5 + ecshop 2.7.2 实现了完美的同步登入和退出
发现一个简单的方法就是,把ucenter 的data/cache/apps.php 文件复制到各个系统的 uc_client/data/cache/apps.php
就可以解决大半的同步问题
检查过上面问题后,再检查各个系统的关于ucenter 的配置处,确保key和uc里面的一致,然后清空各系统缓存,测试
http://www.edbiji.com/doccenter/showdoc/69/nav/818.html
首先有两个测试站点,但是uc_client放错了位置,要粘贴进每个站点里面,然后,要修改uc.php和登陆文件里面所有涉及到的文件路径,官方的例子并没有说明这一点
看文件是否包含成功,可以在被包含的文件里面用echo打印出来一些东西
登陆一个站点后查看静态页源码
发现引用的uc的方法用js遍历了一个些东西,就是请求了很多的api登陆接口
js的遍历认证是以这个apps.php为依据的
如果通信成功了,uc就会生成一个apps.php,里面有一个数组,其实就是方便刚才登陆的时候用js遍历所有的站点,并一一认证