背景:
基于Joomla系统开发Ucenter应用,完成Joomla系统与整套DISCUZ平台的整合。
--------------------------------------------------------------------------------------
Step-1: 准备文件
复制discuz系统目录下api和uc_client到相应的系统目录下
Step-2: 在Ucenter中添加应用(开发开始)
在Joomla系统下添加install.php文件,开始进行Ucenter通信测试。
在Ucenter中添加应用(新应用安装模式),路经如下www.gloolsosw.lo/install.php
初步测试返回信息如下:
array(4) {
["appurl"]=>string(35) "http://www.gloolsosw.lo/install.php"
["ucapi"]=>string(21) "http://www.ucenter.lo"
["ucfounderpw"]=>string(32) "aeff4fd0562f5e9d27d794daefc3fd30"
["installsubmit"]=>string(9) " 安 装 "
}
DISCUZ install/index.php 程序UC request分析
Request-1:
$ucinfo = dfopen($ucapi.'/index.php?m=app&a=ucinfo&release='.UC_CLIENT_RELEASE, 500, '', '', 1, $ucip);
注:向UC发起请求,获取UC information, 返回信息列表如下:
list($status, $ucversion, $ucrelease, $uccharset, $ucdbcharset, $apptypes) = explode('|', $ucinfo);
Request-2:
$postdata = "m=app&a=add&ucfounder=&ucfounderpw=".urlencode($ucpw)."&apptype=".urlencode($app_type)."&appname=".urlencode($app_name)."&appurl=".urlencode($app_url)."&appip=&appcharset=".CHARSET.'&appdbcharset='.DBCHARSET.'&'.$app_tagtemplates.'&release='.UC_CLIENT_RELEASE;
$ucconfig = dfopen($ucapi.'/index.php', 500, $postdata, '', 1, $ucip);
注:发送POST数据,并返回ucconfig信息。通过save_uc_config($ucconfig."|$ucapi|$ucip", CONFIG)保存ucconfig后,于UC部分交互信息完成。
$postData所包含信息的字段列表如下:
$ucfounderpw = getgpc('ucfounderpw', 'P');
$apptype = getgpc('apptype', 'P');
$apptype = getgpc('apptype', 'P');
$appname = getgpc('appname', 'P');
$appurl = getgpc('appurl', 'P');
$appip = getgpc('appip', 'P');
$viewprourl = getgpc('viewprourl', 'P');
$appcharset = getgpc('appcharset', 'P');
$appdbcharset = getgpc('appdbcharset', 'P');
$apptagtemplates = getgpc('apptagtemplates', 'P');
以上代码片断来源于UCENTER appController::onadd method.
在执行add 行为后,UCENTER需要进行客户端应用API通信测试,也就是说在执行这一步之前,需要首先完成当前应用 /api/uc.php 部分程序工作,
该部分调试可以参考DISCUZ程序。
如果以上步骤都成功,那么应用添加成功,同时用户整合部分也完成。
备注:在以上分析中,省略了很多中间判断和数据处理步骤,这些原程序都在DISCUZ /install/index.php 中。
Step-3:根据以上步骤的测试,首先完成api/uc.php部分程序
这个是Joomla和Ucenter整合的关键部分,uc_client文档是一个支持API/uc.php程序正常运行的library包。
另外,正式的调试api/uc.php 就必须先完成install.php 部分的程序,因此在我们粗略完成api/uc.php 程序的时候,继续回到install.php 程序部分。
其次api/uc.php 调试的时候有一点小困难,所有的调试信息需要写到文档中,然后打开文档看调试信息,因为这个程序是服务器调用
没有任何数据可以显示在当前页面,即使程序错误。
Step-4: 继续完成install.php部分程序