ucenter同步登陆详细步骤与问题

来源:互联网 发布:笔记本电脑性能优化 编辑:程序博客网 时间:2024/05/01 09:15

(一)ucenter与项目的接口通信

1.打开下载的UCenter,把 advanced 目录里面的 uc_client 和 examples下面的api 文件夹复制到你的网站根目录。(我是统一放在jiekou_api的文件夹下方便管理)

 

2.在开始进行我们的api目录里面的uc.php 配置了

(1)在jiekou_api文件夹创建config.inc.php文件,用于配置(后面会提到里面写什么)。

(2)找到61行左右位置,

$GLOBALS['db'] = new dbstuff;

$GLOBALS['db']->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset);

$GLOBALS['tablepre'] = $tablepre;

 

将以上3行修改成:

$GLOBALS['db'] = new ucclient_db;

$GLOBALS['db']->connect(UC_DBHOST, UC_DBUSER, UC_DBPW, UC_DBNAME, UC_DBCONNECT, true, UC_DBCHARSET);

$GLOBALS['tablepre'] = UC_DBTABLEPRE;

(用于调用uc的数据库操作方法,否则将不能通信成功)

 

3.登录配置好的ucenter站点——应用管理,添加应用

(1)应用类型:由于是自己的程序,选择其他

(2)应用的主url:http://xxxxx/jiekou_api  (末尾不加“/ ”)

(3)应用IP,后面说明说不用填写

(4)应用密钥: 例如 edlt

(5)应用的物理路径:也提示说可以不用填写

(6)开启同步登录,提交

 

4.打开生成好的应用,底部会出现应用的 UCenter 配置信息: 将框里的信息复制至之前创建好的config.inc.php文件里。

 

5.返回查看 应用后面是否显示 通信成功。

 

 

(二)对接流程与原理

 1.打开Index控制器 的index方法,找到相应位置,引入:

include_once(DOKEOS_ROOT_SYS .'jiekou_api/config.inc.php');

include_once(DOKEOS_ROOT_SYS .'jiekou_api/uc_client/client.php');

 

2.获得用户登录的 账号密码,通过:
$uc_members_info=uc_user_login($username,$password); //这是uc的验证uc库里用户信息的方法。直接调用即可。返回值>=1则表示验证成功。

 

 

3.$uc_uid = uc_user_register($username, $password, $email);//这是uc注册用户的方法,可以结合,上一步进行用户的自动添加,返回值为uc库里的用户uid

 

 

4.验证成功后,通过uc_user_synlogin($uc_members_info[0]); 来执行一站登录的代码。

此方法原理为:通过uc的代码,生成一段js,这段js执行后会访问相应站点下的api接口文件,命令本站生成cookiecookie默认名称为Example_auth,可以通过uc.php文件里的synlogin函数更改名字,里面存储的是一段将用户名密码加密编码后的字符串。

 

在此步请注意,生成的COOKIE[Example_auth]路径问题,这会直接导致本页面能否正常使用本cookie的问题。

 

解决方法:打开uc.php找到,270行左右 _setcookie函数中,有一项$cookiepath,如果不按照上面提示引入配置文件(前提配置文件里已添加$cookiepath的配置), 就需手动将$cookiepath更改为 /

 

 

5.生成成功后,调用本COOKIE[Example_auth]即可,由于是一段加密的字符串,所以需要解密。

include_once(ROOT_PATH .'jiekou_api/config.inc.php');

include_once(ROOT_PATH .'jiekou_api/uc_client/client.php');

(引入文件)

调用方法,返回值为uc库中的uidusername

list($Example_uid,$Example_username)= explode("\t", uc_authcode($_COOKIE['Example_auth'], 'DECODE'));



另:如果登录是用ajax的 则 使用$("body").append(msg);输出即可,如不过不是 直接echo uc_user_synlogin($uid)即可



0 0