Ucenter整合Thinkphp 双向同步登录退出

1、整合初步工作:
  1,安装Ucenter,完成后添加应用,填写要对接的网站地址
  2,api , uc_client目录放置对接项目的根目录
  3,通信对接,新建Ucenter组,confi文件填写在ucenter添加应用后生成的配置文件复制放入当前组的config.php文件
  新建Api目录放置通信所需要的类库(注意类库之间的引入,3.2命名空间,3.1.3使用import导入 ** 此处比较容易出问题)
  新建Index模块写入如下代码:
  import("@.Api.UcenterLib");    
  UcenterLib::back();
  刷新Ucener中的应用发现通信成功。ok,对接已好。
  4,同步注册,同步登陆,同步退出
  此步骤需要注意类库之间的应用,Ucapi类是主要实现这些同步操作,需要主要Ucapi类需要引入
  require_cache(WEB_ROOT . '/Ucenter/Conf/config.php');  ucenter组下的config配置文件主要读取常量UC_API
  require_once './uc_client/client.php'; 
  多站点单点登陆解决方案:
  在站点中的用户表需要关联Ucenter中的主键uid字段,以某个站点的会员注册为会员信息入口,注册入库同步Ucenter信息实现单点登陆。
2、对接成功后,在对接项目中发现同步登陆和同步推出异常的慢,卡好长时间,最终发现在同步的时候
if(@include UC_ROOT.'./data/cache/apps.php') {
        if(count($_CACHE['apps']) > 1) {
            $return = uc_api_post('user', 'synlogin', array('uid'=>$uid));
        } else {
            $return = '';
        }
}

 

此处调用了uc_client目录下的应用cache下的apps,给与文件读写权限后,更新ucenter的缓存发现好了
 
3、ucenter同步注册密码机制:
$salt members表字段随机码
$password = md5(md5($password).$salt);
4、ucenter 通讯函数:
function onping() {
        $ip = getgpc('ip');
        $url = getgpc('url');
        $appid = intval(getgpc('appid'));
        $app = $_ENV['app']->get_app_by_appid($appid);
        $status = '';
        if($app['extra']['apppath'] && @include $app['extra']['apppath'].'./api/'.$app['apifilename']) {
            $uc_note = new uc_note();
            $status = $uc_note->test($note['getdata'], $note['postdata']);
        } else {
            $this->load('note');
            $url = $_ENV['note']->get_url_code('test', '', $appid);
            $status = $_ENV['app']->test_api($url, $ip);
        }
        if($status == '1') {
            echo 'document.getElementById(\'status_'.$appid.'\').innerHTML = "<img src=\'images/correct.gif\' border=\'0\' class=\'statimg\' \/><span class=\'green\'>'.$this->lang['app_connent_ok'].'</span>";testlink();';
        } else {
            echo 'document.getElementById(\'status_'.$appid.'\').innerHTML = "<img src=\'images/error.gif\' border=\'0\' class=\'statimg\' \/><span class=\'red\'>'.$this->lang['app_connent_false'].'</span>";testlink();';
        }

    }
双向同步登陆退出关键在于
    1、1:项目为自定义框架:api/uc.php,在此接口文件处理同步的相关操作
    1、2:Thinkphp项目中Ucenter独立分组中的同步Ucenter类库中处理
注意问题:
define('UC_DBTABLEPRE', '`idcbbs`.`idcbbs`.idc_ucenter_');系统生成的错误配置项,难道ucenter系统有问题?此处导致bbs登陆失败,提示乱码问题
define('UC_DBTABLEPRE', '`idcbbs`.idc_ucenter_');
posted @ 2016-09-01 17:55  别安驹  阅读(1837)  评论(0编辑  收藏  举报