吾知网

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 7972|回复: 1
打印 上一主题 下一主题

UCenter整合第三方应用程序

[复制链接]
跳转到指定楼层
楼主
发表于 2017-12-7 10:58:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
UCenter除了对实现用户通行,各个应用通用信息的存储和处理之外,还有一个重要的功能就是开放的接口协议,其他第三方应用程序通过简单修改,即可很容易将程序纳入UCenter体系中来,和其他应用共享用户以及其他数据 ,关于第三方应用程序的整合牵扯到的东西比较多,这里篇幅有限不能很详细的说,我只对整合概念上做一些描述。
第三方应用程序的整合可以分为两个层次,一种层次只整合用户基本数据,能够实现用户的同步登录。这个层次的整合只需需要应用程序的注册和登录程序即可,注册通过接口将用户信息发送给UCenter,登录时候将用户提交的信息发送到UCenter进行验证,其他的相关操作还保持系统的原有操作即可。这个层次的整合改动相对比较少,实现起来比较容易。
第二个层次的整合就是比较深层次的整合了,除了上述说的用户基本数据整合,还有更多数据的交互,例如使用UCenter的共用TAG 机制将各个应用的信息关联起来,将程序应用的用户行为推成事件(feed),把本应用和其他应用的用户积分进行兑换,通过接口发送社区短信息等等。这样的整合相对改动的地方比较多,实现起来比较复杂,不过上述举例说的这些功能UCenter都有完善的接口,第三方应用程序只需要调用相应的接口即可实现,无需再自行编写相关功能代码 。
上面说的是从概念上介绍一下UCenter整合第三方应用的方式,下面具体说说整合的细节,这里只是把一些关键步骤列出来。
首先说一下要在第三方应用下添加的文件 ,首先要把UCenter压缩包里面的client目录放在第三方应用更目录下,这个目录主要放置UCenter一些接口文件,这个目录的名称可以根据需要自行修改,例如Comsenz旗下产品都是统一用 uc_client为目录名称。其次要在应用根目录下建立api目录并创建一个uc.php文件,这个文件主要用于和UCenter通信,目录名称和文件必须是固定的,否则无法和UCenter进行通信。
说完放置的文件再简单说一下接口文件调用,调用很简单只要在需要条用函数的地方,加入这样的代码
include './uc_client/client.php'; 然后就可以调用其中的函数了。
举例:



这个例子只是众多接口函数之一,如果想了解更多相关接口函数,可以看我们提供的UCenter开发手册(地址:http://blog.phpha.com/manual/ucenter/)这里面对UCenter所有的相关数据函数均有详解,相信一定能对你的整合起到很大的帮助作用。
如果大家对这方面感兴趣可以去下载我上面说的那个UCenter开发手册,里面详细说明了相关接口详解以及详细的整合方法。

沙发
 楼主| 发表于 2017-12-7 11:43:14 | 只看该作者
ThinkPHP3.0快速整合UCenter

首先我们先安装Thinkphp,我们这次教程使用的是Thinkphp3.0稳定版,首先我们下载Thinkphp3.0,解压并放在自己的 www目录,在根目录新建 index.php 文件 并写入: require_once './ThinkPHP/ThinkPHP.php'; 通过本机游览index.php 、 thinkphp会生成相应目录。 (*^__^*) 嘻嘻…… 很智能的哦。然后配置config.php 写入你的数据库连接配置,这个晓渔就不写了,请不会的童鞋查下手册吧!

  然后下载目前最新版本的UCenter 1.6 版本,在网站根目录新建 ucenter 目录,解压UCenter,把upload目录里的所有文件上传到你刚才新建的ucenter目录里,在游览器输入 http://localhost/uceter/install/ 如果不是这个访问地址请换成相应的访问地址哦 ! 安装ucenter。

  然后找到下载的UCenter,把 advanced 目录里面的 uc_client 和 examples下面的api 文件夹复制到你的网站根目录,是好ThinkPHP同级目录哦。

  现在开始进行我们的api目录里面的uc.php 配置了,首先我们用编辑器打开这个文件,找到36行的位置,发现这里导入了一个配置文件 require_once DISCUZ_ROOT.'./config.inc.php'; 基于ThinkPHP的目录结构,所有的配置文件都放在Config目录里,那么我们在 Config目录里新建 config_ucenter.php 文件,并把uc.php文件所有包含的 require_once DISCUZ_ROOT.'./config.inc.php'; 修改为 require_once DISCUZ_ROOT.'./Conf/config_ucenter.php'; 有的童鞋可能会问了 config_ucenter.php怎么配置呢?其实这个是非常简单的,甚至不用我们来写代码,直接复制粘贴就OK了 ,我们先登录到 ucenter 应用管理,添加一个应用吧!点击左侧菜单栏 应用管理 ,然后我们看到还没有应用,那么我们点击添加应用,哇,让我们填写的还挺多啊。那么我们首先看选择应用,因为我们是自己的程序,选择其他吧,应用名称,这 个随便起个名字就可以 20字节之内哦。应用的主url ,我们这次讲解的是Thinkphp整合Ucenter 那么我们的Thinkphp是在跟目录的,这里我填入 http://www.ttedu.com.cn 童鞋们如果是本地就填写 http://localhost 不用加 "/" 哦,下面是应用IP,后面说明说不用填写,那么我们就留空吧,以为我比较懒 呵呵!应用密钥?这里怎么填呢。其实这里随便写入些字符串就可以 ,这个密钥是两个程序之间互通的严重,相当于你去别人家拿东西,别人最起码要认识你一样,如果别人都不认识你,怎么会把东西给你呢?更何况是网站核心的会 员信息啊。呵呵!我们测试用 ,随便填上点吧 “123456” 呵呵 ,我比较懒吧!应用的物理路径?也提示说可以不用填写,那么留空吧!个人资料页面?这个有点犯难了,UCenter怎么会这么智能呢?留空吧。。应用程序 名称,他已经帮我填好了,咱们跳过!呵呵

  标签单条显示模板 不知道干嘛的 跳过吧。。标签模板标记说明 继续跳过。

  是否开启同步登录 这个不用说了 选中。 是否接受通知 继续选中。OK了 基本信息填完了,提交下 。通信失败?这是为什么呢?头疼啊。。我们看下面多了个 “应用的 UCenter 配置信息” 右侧还有详细说明:当应用的 UCenter 配置信息丢失时可复制左侧的代码到应用的配置文件中 。一切变的明了了。复制文本框内的配置信息,我记得我们之前新建一个 config_ucenter.php 的文件还是空的,难道放这里的吗?那么试一下吧!把这些信息粘贴到里面,保存。 在看ucenter 刷新下! OK 通信成功!不错,基本通信我们就完成了!

现在开始程序正式的整合!将ucenter 提供的api方法封装下,让我们的程序看起来更加干净整洁!首先,我们先在lib目录下新建一个文件夹,并命名为:Service。这个文件夹的功能一会 在和大家讲解。然后再Service 里面建立我们自己的类,以方便和UC的通信,新建php文件,文件名为:UcService.class.php,

  类名UcService,我们在类里实现对UCenter的操作。要操作UCenter的API ,首先我们要导入相应的文件,相信大家已经想到了,第一个是UCenter的配置文件:config_ucenter.php,第二个是我的程序和 UCenter通信的 client.php 文件 。导入这两个文件,我们在index.php入口文件增加一个常量,来定义我们的物理跟目录。

//项目物理跟路径

define('DOC_ROOT_PATH', rtrim(dirname(__FILE__), '/\\') . DIRECTORY_SEPARATOR);

然后我们在UcService.class.php里定义一个构造函数,来导入我们的这两个文件,

public function __construct()
{
include_once(DOC_ROOT_PATH . 'Conf/config_ucenter.php');
include_once(DOC_ROOT_PATH . 'uc_client/client.php');
}

  OK!相信童鞋们都已经完成了上述的步骤,下面我们来编写相应的代码,来实现和UCenter的同步,首先我们先来完成注册的代码。

//用户注册 这个方法是UcService.class.php的

public function register($username, $password, $email)
{
$uid = uc_user_register($username, $password, $email);
if($uid <= 0) {
if($uid == -1) {
return '用户名不合法';
} elseif($uid == -2) {
return '包含不允许注册的词语';
} elseif($uid == -3) {
return '用户名已经存在';
} elseif($uid == -4) {
return 'Email 格式有误';
} elseif($uid == -5) {
return 'Email 不允许注册';
} elseif($uid == -6) {
return '该Email 已经被注册';
} else {
return '未定义';
}
} else {
return intval($uid);
}
}

  这个函数是UCenter的注册验证,只要我们在程序中实例这个类,使用这个函数就能进行和UCenter的通信验证注册。

  那么我们是怎么使用它的呢?

  首先我的注册文件是 http://www.ezcx.net/Register/teach,也就是说在你的程序目录里,Lib/Action/Home/下面有一 个Register.class.php 文件,我们打开这个文件,如果没有请创建这个文件,我的目录下面是有分组的Home是分组的名称目录,如果没有配置的童鞋请直接在Action目录创建, 这个类要继承Action哦!然后我们在在类里面创建一个teach的方法函数,用来显示一个注册的页面。

  然后我们在新建一个函数,用来处理teach方法函数提交的数据,并加入到数据库!这里是主要的喽哦!

public teach(){

$this->display();

}

public function regDo(){

if($this->isPost()){
if(!$_REQUEST['username'] || !$_REQUEST['email'] || !$_REQUEST['password']){
exit('data invalid.');
}
$nick = $_REQUEST['username'];
$email = $_REQUEST['email'];
$pw = trim($_REQUEST['password']);

//这个类需要在Conf/config.php里配置下的哦,一会下面会讲到!
$ucService = new UcService;
$uid = $ucService->register($nick, $pw, $email);
//成功注册到UC
if(!is_string($uid)){
$send_email = false;
$is_verifyed = 1;
//本地注册
$uModel = D('auser');
$data['user_id'] = $uid;
$data['nick'] = $nick;
$data['email'] = $email;
$data['password'] = md5($pw);
if($uModel->add($data)){
$this->success("注册成功!","__APP__/");
}else{
$this->error("注册失败!");
}
}else{
exit($uid);
}

}
}

  本地注册后面,童鞋们可以直接写你们的程序逻辑代码,执行这一步之前,我们要在Conf/config.php里加上一句,

  'APP_AUTOLOAD_PATH' => '@.Service',

  这句话的意思是告诉ThinkPHP,我们程序执行的时候自动导入Action下面的Service目录里的文件,如果不导入的话,在我们regDo里是会报错的哦 !会提示找不到UcService 类,下面我们来测试下是不是可以注册成功呢?

  我们打开http://www.ezcx.net/Register/teach 填写用户名,密码,邮箱,提交!OK!程序提示我们注册成功了!那么我们进入UCenter看看是否有用户注册成功了呢?我刚才填写的是 用户名:test 密码:123456 邮箱:ezcx@ezcx.net,在ucenter的用户管理我们看到已经有了 出现了我们刚才注册的用户,说明我们注册的已经成功了!



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|吾知网 ( 粤ICP备13013563号-1 )

GMT+8, 2024-12-22 20:33 , Processed in 1.093750 second(s), 7 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表