ucenter登陆不了上怎么回事

UCenter是一个用户中心产品,通过它可以做到几个网站间,或应用之间只需要登陆一次就能在这些站点中有了登陆的信息。UCenter中添加应用要让应用可以和UCenter通信这是必须的一步,毕竟肯定要让UCenter知道这个应用的存在不是?
在应用类型中,可以选择已有的应用类型,如果是这其中的一种程序的话直接的选好,基本上就完成了应用添加了使用UCenter自带有的应用类型,基本上也没什么难度了,就配置,这要说的是自己的应用,也就是选择应用类型中other的情况下怎么使用UCenter 同步登陆.研究discuz中的同步登陆通过观察discuz的应用配置和dz 的目录结构可以发现作为一个UCenter的客户端,要与Ucenter进行通信最主要要用到DZ中的这些文件:api/uc.php &-- &通信的接口文件,根据UCenter通过GET发送过来的信息,进行本地的处理(同步登陆\退出)等config/config_ucenter.php &-- &配置文件,主要记录了UCenter server的地址信息和通信密钥等,里面的信息可以通过在UCenter中创建应用的时候获取到,如下图:uc_client(文件夹) -- &uc客户端都要用都的类和函数都在这里面应用的主URL: 在ucenter添加应用的时候,有个应用的主URL,按照dizcuz这个默认应用里面的填写来看(配合下面的接口文件uc.php),就应该是接口文件所在的目录,但是一般的现在所写的应用(或用框架)都是单一入口的,如果将UC的接口文件放在根目录下可以直接访问的话就破坏了原本的程序结构(比如:程序控制方面的),所以为符合现有的结构需要将接口文件的内容写到我们的原本的程序中(可以新建一个controller,而action的内容就是uc.php的内容).经过测试这样的方法是可行的.通信密钥: 通信密钥是指,client 与 server之间通信加密 所用到的字符串。可以随便填写。应用接口名称: 这里指定的就是client上的接口,如果是单一入口,并且用了上面所讲的方法写主URL的话这里的填写可以为空。(经实验为空可行)Ucenter 应用添加部分结束应用部分:应用部分,上面所说需要用的文件必须得有 接口文件(uc.php 可以做成controller action 的形式) config_ucenter.php 配置文件 &和 uc_client文件夹 ,至于这些文件或者文件夹需要放到哪里都不固定,只需要能在用的时候可以include他们就行了。config_ucenter.php 的填写 按照上面所说的,将添加应用时,最下面产生的信息复制一下,粘贴到config_ucenter.php 就行了。接口程序: 复制discuz的uc.php全部内容,无论是单一入口形式用controller action 还是直接的用uc.php作为访问路径,都是可以的。
只要添加应用时URL写对了,配置文件写对了,就能看到通信成功的字样接下来的就是本文的重头戏了接收Ucenter发送的同步登陆、退出的通知,并作出相应的代码编写同步登陆、退出这功能 在这里看来是分两个方向的,一个是ucenter到应用的同步登陆(即在别的应用上登陆了,而本应用是作为被通知登陆的),另一个是本应用到ucenter的登陆(获取ucenter上的用户数据,并通知其它应用进行登陆)
这里只讲第一种情况,第二种将在下一篇文章。接收同步登陆这里开始就是到接口程序里面去写了,无论哪一种情况(单一入口,还是直接的uc.php)
找到以下代码:修改成自己应用所需的登陆程序就行了(不需要做验证,因为ucenter发过来的都是已经登陆成功的,只需要以自己程序的格式,将用户信息保存到session就好了,以便用户访问的时候可以不用再次登陆)登陆//同步登陆
function synlogin($get, $post) {
& & & & & & & /**
$ci = get_instance();
$ci-&load-&model('User_Model');
$ci-&User_Model-&userLogin($get);
& & & & & & & **/
& & & & & & &// 此处填入自己应用中登陆所需做的事
& & & & & & &//$get $post 都是从ucenter发送过来的用户信息(数组)
}退出//同步退出
function synlogout($get, $post) {
& & & & & & & &$ci = get_instance();//获取ci超级对象
$ci-&load-&model('User_Model');
$ci-&User_Model-&userLogout();
& & & & & & & &**/
& & & & & & & // 此处填入自己应用中登陆所需做的事
}然后就可以测试,在discuz上登陆,看该应用是否也同样的登陆了(只要 syslogin方法没写错的话)
如果内容对你有帮助,而你愿意打赏我一点零钱用于续费服务器,可以通过以下二维码
添加新评论
: 应该说一声需要是64位的windows7
: 我找到激活的方法了,已经成功激活,有兴趣可以看看,UEFI wi...
: 之前有很多可以一键激活的工具,但用过之后一段时间,系统更新后,有...
: 谢谢,U盘制作方式正好是我需要的,不过请问有没有这种安装方式的激...
: 你好,怎样可以联系到你,是否可以留个邮箱方便交流,谢谢
: 比较靠谱啊,积累了
: 我这用的不是deb 包安装的QQ
是 tar 的解压出来就一个...
: 这两个版本都没用过,他们不会自动生成吗?
: well ! You should teach your tea...ucenter同步登录解决方法
这是一个巨大的坑,研究了一下午,发现问题出在了client.php文件里。同步登录代码为:function uc_user_synlogin($uid) { $uid = intval($uid); if(@include UC_ROOT.'../data/uc_cache/apps.php') { if(count($_CACHE['apps']) & 1) { $return = uc_api_post('user', 'synlogin', array('uid'=&$uid)); } else { $return = ''; } } return $}但是返回一直是NULL,最后发现是if(@include UC_ROOT.'../data/uc_cache/apps.php')里判断的不对,对照ucenter home的写法,改成如下代码:function uc_user_synlogin($uid) { $uid = intval($uid); $return = uc_api_post('user', 'synlogin', array('uid'=&$uid)); return $}这样在ThinkCMF上同步登录成功。但是同步退出和在其它应用登录依旧无法在ThinkCMF上同步登陆。这个原因应该是和ThinkCMF采用了SESSION的方式有关。还在研究中。
Code licensed under the .
Based on .
Icons from通过UCenter接口完成注册后的新用户在Discuz论坛登陆不了
你好,想跟你请教个问题:如题ucenter同步登陆 synlogin - ThinkPHP框架
ucenter同步登陆 已经通信成功 也能进行登陆判断 返回的js代码也进行了输出
为什么还是不能同步登陆??
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

我要回帖

更多关于 dz ucenter登陆不进去 的文章

 

随机推荐