UCenter整合网站同步登录

来源:互联网 发布:mac 安卓手机助手 编辑:程序博客网 时间:2024/05/01 14:56
康盛官网下载UCenter代码
http://www.comsenz.com/downloads/install/ucenter#down_open
解压后advanced\document目录为UCenter接口开发手册,可以参照学习




使用Ucenter进行同步登录的一半分为三类网站:
1、 康盛自己的应用 UCenter Home、Discuz、SupeSite、X-Space。
图文整合
2、 支持UCenter插件的网站,如PHPCMS、Destoon、Dede、ECShop等等。
图文整合
这些网站已经集成了UCenter插件,相应的register、login、logout中对uc同步进行了相应
的处理,只需要在界面中设置uc就可以了。
2、 再就是需要手动添加同步登陆代码的网站。
代码整合
无论是图文整合还是代码整合其实都是在代码中实现了一下的步骤,只不过图文整合的代码中加载了Ucenter的代码进行了整合。
UCenter源代码中upload为Ucenter服务器,配置好后,进入install目录,安装好UCenter后,登陆Ucenter。
应用管理->添加新应用
 
 
 
需要输入的内容:应用类型、应用的名称、应用的主URL、通信密钥
应用文件接口名称一般不要更改,使用默认的就好。
然后提交就可以,提交后,将【应用的 UCenter 配置信息】内容拷贝出来,需要配置到同步网站的config.inc.php中。
回到应用管理,你可以看到现在的通信情况为【通信失败】。
那么下一步需要我们配置要同步的网站了
首先将下载的Ucenter的源代码中的uc_client目录拷贝到要进行同步登录的网站中。
引入uc配置 
include 'config.inc.php';
include 'uc_client/client.php';
其中config.inc.php中添加了UCenter配置信息,如下所示
define('UC_CONNECT', 'mysql');// 连接 UCenter 的方式: mysql/NULL, 默认为空时为 fscoketopen()
// mysql 是直接连接的数据库, 为了效率, 建议采用 mysql
//数据库相关 (mysql 连接时, 并且没有设置 UC_DBLINK 时, 需要配置以下变量)
define('UC_DBHOST', 'localhost'); // UCenter 数据库主机
define('UC_DBUSER', 'root'); // UCenter 数据库用户名
define('UC_DBPW', 'root'); // UCenter 数据库密码
define('UC_DBNAME', 'ucenter'); // UCenter 数据库名称
define('UC_DBCHARSET', 'utf8'); // UCenter 数据库字符集
define('UC_DBTABLEPRE', '`ucenter`.uc_'); // UCenter 数据库表前缀
define('UC_DBCONNECT', '0');
//通信相关
define('UC_KEY', '123123789'); // 与 UCenter 的通信密钥, 要与 UCenter 保持一致
define('UC_API', 'http://www.ucenter.com'); // UCenter 的 URL 地址, 在调用头像时依赖此常量
define('UC_CHARSET', 'utf-8'); // UCenter 的字符集
define('UC_IP', ''); // UCenter 的 IP, 当 UC_CONNECT 为非 mysql 方式时, 并且当前应用服务器解析域名有问题时, 请设置此值
define('UC_APPID', '1'); // 当前应用的 ID
define('UC_PPP', '20');
//本地配置的
//同步登录 Cookie 设置
$cookiedomain = ''; // cookie 作用域
$cookiepath = '/'; // cookie 作用路径
引入配置文件后,为网站的注册、登陆、注销添加同步代码
1、注册
//在UCenter注册用户信息
$uid = uc_user_register($_POST['username'], $_POST['password'], $_POST['email']);
if($uid <= 0) {
if($uid == -1) {
echo '用户名不合法';
} elseif($uid == -2) {
echo '包含要允许注册的词语';
} elseif($uid == -3) {
echo '用户名已经存在';
} elseif($uid == -4) {
echo 'Email 格式有误';
} elseif($uid == -5) {
echo 'Email 不允许注册';
} elseif($uid == -6) {
echo '该 Email 已经被注册';
} else {
echo '未定义';
}
} else {
//注册成功,设置 Cookie,加密直接用 uc_authcode 函数,用户使用自己的函数
setcookie('Example_auth', uc_authcode($uid."\t".$_POST['username'], 'ENCODE'));
echo '注册成功<br><a href="'.$_SERVER['PHP_SELF'].'">继续</a>';
}
2、登录
list($uid, $username, $password, $email) = uc_user_login($_POST['username'], $_POST['password']);  //通过接口判断登录帐号的正确性,返回值为数组
$ucsynlogin = uc_user_synlogin($uid);    //生成同步登录代码
$ ucsynlogin内容如下,通过script通知同步的网站调用synlogin进行登录
<script type="text/javascript" src="http://www.ucexample.com/api/uc.php?time=1408084493&amp;code=c5e2NSV1R5VNMf8l0WFFzPWSQMEAKALZ%2BBWle58cbNajXGDB93nhEFCgZvQAfbsubRs9rSxxhJoEvKONyvIfD00RfdEKtnyBPAqSIw3DkBEj%2FXZaV%2FKkMn4847GZHFbyDjZGz1gkIv%2Fp57o2zWpqTJJITFrXMG8mOKPTfMs" reload="1"></script>
解密后http://www.ucexample.com/api/uc.php?action=synlogin&username=destoon&uid=4&password=08f253a1673403dae5b04de4512455e5&time=1408087222


3、注销
setcookie('Example_auth', '', -86400); //注销本地
$ucsynlogout = uc_user_synlogout(); //生成同步退出的代码
echo '退出成功'.$ucsynlogout.'<br><a href="'.$_SERVER['PHP_SELF'].'">继续</a>'; //输出同步退出的代码
$ucsynlogout内容如下,通知同步的网站uc.php调用synlogout注销cookie
<script type="text/javascript" src="http://www.ucexample.com/api/uc.php?time=1408086966&amp;code=e839sEychnkXbEC986Ytm5DjLIFafLCYL0p5z6%2Bw6sAbwx7rvsXiQLnB0DRuBFUoaODxY9bPEpcQGNWqvg" reload="1"></script>
解密后http://www.ucexample.com/api/uc.php?action=synlogout&time=1408087295


4、修改api/uc.php内的函数的cookie和db操作
uc.php           uc_client.php
deleteuser uc_pm_deleteuser
renameuser 
gettag uc_tag_get
synlogin uc_user_synlogin
synlogout uc_user_synlogout
updatepw 
updatebadwords 
updatehosts 
updateapps 
updateclient 
updatecredit 
getcreditsettings 
updatecreditsettings


在common.inc.php中
判断账号是否已经登录时候从cookie取值


?>
0 0