01-Ucenter与WordPress整合实现用户同步登陆

在这一系列的文章中,我会逐步说明如何将Discuz Ucenter与WordPress整合起来。实现用户数据统一。登陆、积分公用等。

也许很多朋友觉得WordPress没有必要和Ucenter整合。博客系统似乎也不需要那么多用户。

我个人处于如下考虑:

  1. 我希望我的博客中的阅读者、评论者、作者能够永久的作为一个数据保留。
  2. 同时,这些用户还可以拥有对应的积分来显示他们的拥有不同的权利。这在某些资源下载和技术支持上有明显的区别。
  3. 最后,这些用户的数据还可以用于其他的系统。
  4. 当然,我们通过整合操作还可以获得如下宝贵经验:更加熟悉Ucenter、WordPress的工作机制。Php能力更进一步、提高了自己、快乐了他人。哈哈……

让我们开始吧!

在第一步先来做一些准备工作吧!

工具部分:

  • EditPlus 骨灰级编辑器
  • Dreamweaver 个人偏好(用于css编写)
  • FlashFXP 个人偏好(FTP上传工具)
  • Poedit 语言包工具(WordPress语言包制作必备工具)

程序部分:

  • 已经安装的WordPress博客一只
  • 已安装的Ucenter系统一条
  • Ucenter相关的程序2个[ api]、[ uc_client ]

暂时就这么多吧,如果有遗漏我们后边再补充。

这篇文章中我们先来完成Ucenter的应用添加,且对WordPress进行部署以达到它们可以相互通信的结果。

首先登陆Ucenter【我建议你使用创始人操作】,如下图添加应用:

添加Ucenter应用

请注意选择自定义安装:

应用自定义安装图示

自定义安装中有几项这边单独说明一下:

  • 应用名称:此项可以根据自己需要来填写,但是要注意命名规则。我则填写“WordPress”
  • 应用主URL:此项需要填写你的blog首页访问路径,注意不要以“/”结束。我则填写“http://www.woria.cn/blogs”
  • 通信密钥:这个就随意填写了,不要看写密钥两个字就被吓住了。我则填写“wordpress_key”
  • 应用类型:此项我们选择其他,因为WordPress并不是Discuz的产品。所以我们要选择“其他”

剩余项则可以留用,除非你清楚它的用途。否则你就留空吧。起码我是留空的。
需要注意的是最后两项:

  • 是否开启同步登录
  • 是否接受通知

这两个是要点选是的。即所谓的一卡通咯。

确定之后,我们回到应用管理页面,会发现通信是失败的。这是当然的,我们还需要对WordPress文件目录进行部署,才可以实现两个系统的通信。

现在我们需要用到[ api ]、[ uc_client ]两个程序。这两个程序在下载Ucenter时候会有附带。我来简单说明一下他们的用途:

  • api文件夹中只包含了uc.php。如果你有注意,我们在添加Ucenter应用时候有一项“应用接口文件名称:uc.php”。此文件的作用是接受Ucenter的通知,对应用【WordPress】做相应的操作。比如说:我在Ucenter中更新了用户xx的积分,或者密码、头像。那么Ucenter会向所有的应用发送通知(如果打开通知选项的话)。这个通知会执行应用根目录下api文件夹uc.php中对应的操作。
  • uc_client文件夹则包含较多的文件。它的作用是响应应用程序命令与Ucenter进行通讯。比如我在WordPress中要使用Ucenter的登陆方法。首先我需要引入uc_client中的client.php获得所有Ucenter开放的方法。由uc_client来向Ucenter发送数据获得结果。

上述啰哩啰唆也许你看的头昏脑胀,其实说白了是这样的。

  • Ucenter发出指令执行操作是通过api文件夹。
  • 应用程序(WordPress)发出指令执行操作是通过uc_client文件夹。

接下来我们来对WordPress进行部署以响应Ucenter的通信。

首先在WordPress正常运行中,我们需要加载Ucenter应用生成的配置信息。此配置信息中包含了Ucenter相关的数据库连接信息、应用注册 ID、uc_client访问路径等等。
我们将WordPress根目录的wp-config.php下载到本地准备添加Ucenter的配置信息。请注意保存备份

使用EditPlus打开之后,登陆Ucenter(使用创始人账户)在应用编辑中复制配置信息,如下图:

复制Ucenter配置信息图示

复制之后就使用EditPlus添加到wp-config.php中。添加的内容包含两部分,如图:

修改配置文件图示

请注意第一部分是Ucenter配置。是直接粘贴从Ucenter后台复制来的配置信息。
第二部分则是自行添加的,定义了uc_client的访问路径。

define(‘S_ROOT’, substr(dirname(__FILE__), 0));//获得wp-config.php所在目录,也就是WordPress跟目录了
define(‘UC_CLIENT_ROOT’, S_ROOT.’/ucation/’);//定义常量UC_CLIENT_ROOT,即uc_client访问路径
include_once(UC_CLIENT_ROOT.’client.php’);//引入uc_client目录中client.php文件。

在图示中我用红色框标识出来的文件夹名字是ucation而不是uc_client。因为我将uc_client文件夹改名为ucation了。所以此处要做对应的修改。【请注意,对应的api目录中uc.php也要做响应修改】

我们来看一下对应的WordPress的目录关系,如图:

目录结构图示

可以看到,在wp-config.php同级目录下api及ucation目录(ucation其实是uc_client)。

接下来我们也需要修改api中uc.php访问uc_client的路径。使用EditPlus打开uc.php查找:
define(‘UC_CLIENT_ROOT’, S_ROOT.’./uc_client/’);
修改为
define(‘UC_CLIENT_ROOT’, S_ROOT.’./ucation/’);

修改完毕之后,我们使用FlashFXP将wp-config.php文件、api文件夹、ucation文件夹上传至WordPress根目录。然后登陆Ucenter后台,是否通信成功了!

通信成功拉图示

我们将最后重要的操作整理一下:

  1. 下载wp-config.php添加Ucenter配置信息及uc_client访问路径。
  2. 确保api中uc.php中uc_client的访问路径正确。
  3. 上传wp-config.php、api文件夹、uc_client文件夹到WordPress根目录。

如果在Ucenter后台中看到通信成功就算大功告成咯。

本文中涉及到的程序及附件暂不提供下载。等待教程结束之后。提供完成的附件。

有任何疑问请留言或者发Email给我。

17 comments
  1. 我按照你的方法试了,显示通信失败 另外一个网站也是一样,
    能帮我看看不,QQ 727379786

      1. 我对wiki不熟悉,但是我不清楚你怎么会想把它和wordpress进行整合?
        具体需求是什么呢?

    1. 你通信成功只是说明可以和ucenter进行通信,使用ucenter的用户可以通过验证。
      但是通过ucenter获得验证之后,wp并不能在自己的用户系统中找到用户资料。无法得到这个用户的信息。wp自然是提示没有用户的。
      你需要在用户登陆时候作如下的处理:
      1、同时验证wp和ucenter。是否授权登录的用户。是|进入第二步骤,不是|提示非法用户。
      2、如果是wp,但不是ucenter。调取ucenter在ucenter中注册该用户,同时登陆wp。
      3、如果是ucenter,但不是wp。调取wp注册函数在wp中注册该用户,同时登陆wp。
      4、如果即是wp又是ucenter。则直接登录。
      上边的步骤是最基本的处理步骤。这其中还有一些其他的情况。具体请关注我的其他日志。谢谢!

  2. 你好 我的通信不成功 .

    我想问你:
    1.[ api ] [ uc_client ]两个程序分别在哪个目录下?我见UCenter_1.5.2_SC_GBK\advanced\examples\api;
    UCenter_1.5.2_SC_GBK\advanced\uc_client;请问是这2个吗?

    2.”
    define(‘UC_CLIENT_ROOT’, S_ROOT.’./uc_client/’);”我怎么也没有查找到,难道是版本问题?

    我的Ucenter 是UCenter_1.5.2_SC_GBK,论坛discuz!7.2,WP是3.12

    4.我想把WP和discuz整合起来,希望得到帮助,谢谢啦

  3. •已经安装的WordPress博客一只
    •已安装的Ucenter系统一条

    博客为一只,系统为一条,你连单位都搞不清楚,还谈什么整合,真搞笑

Comments are closed.