文章出处:http://blog.yation.com/webpro/uc_api_debug/
前几天发了一个UTF8版的UC接口应用开发整合包(点这里查阅),包中没有修改官方的代码,只是拿官方提供的示例做了一下编码转换。可是官方提供的开发包示例不能直接使用,感觉api.php文件是直接从DISUCZ中复制出来的,直接放上去都无法正常通信,我这里整理下整个修正过程,以及打包一个可以正常双向通信的示例出来。
首先做准备工作:1、下载UC最新版(下载页面自己选择相应编码);2、下载UC接口开发包(UC及应用为GBK编码请下载官方提供的包,UTF8版下载我转换好的包);3、下载Discuz(下载页面自己选择相应编码,或其他官方应用用于测试同步)。下载好个程序后开始安装,先安装UC,再安装Discuz(如何安装可以到官方论坛查阅相关资料,这里不赘述)。
准备工作 下载3个文件包
UC和Discuz安装好后到UC管理中查看应用,Discuz应该显示通信成功了,到这里我们可以添加示例应用了,(GBK版本用户解压developguide.zip文件后把client文件夹重命名为uc_client并简介到examples文件夹下)把examples文件夹放到网站根目录下。到UC用户中心后台使用自定义安装方式添加examples应用,如下图:
手动安装方式 添加测试应用
按照上图自定义安装“测试应用”并开始同步登录,提交后在测试应用详细页面底部可以看到生成了应用接口配置数据,把它复制出来。
开启同步登录,生成配置项
编辑examples/config.inc.php文件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
// 把添加应用生成的 配置代码粘贴到这里,删除原有的同名项目
define('UC_CONNECT', 'mysql');
define('UC_DBHOST', 'localhost');
define('UC_DBUSER', 'root');
define('UC_DBPW', 'mysql');
define('UC_DBNAME', 'ucenter');
define('UC_DBCHARSET', 'utf8');
define('UC_DBTABLEPRE', '`ucenter`.uc_');
define('UC_DBCONNECT', '0');
define('UC_KEY', '1b9bKBqYJxQzw10JEB41CtF71KM');
define('UC_API', 'http://localhost/ucenter');
define('UC_CHARSET', 'utf-8');
define('UC_IP', '127.0.0.1'); //生成的配置项中此项为空,为了方便通信建议写上UC所在服务器IP
define('UC_APPID', '2');
define('UC_PPP', '20');
//应用生成配置项 结束
/*
以下是应用本身的数据库链接配置
先全部注释掉
//ucexample_2.php 用到的应用程序数据库连接参数
$dbhost = 'localhost'; // 数据库服务器
$dbuser = 'root'; // 数据库用户名
$dbpw = ''; // 数据库密码
$dbname = 'ucenter'; // 数据库名
$pconnect = 0; // 数据库持久连接 0=关闭, 1=打开
$tablepre = 'example_'; // 表名前缀, 同一数据库安装多个论坛请修改此处
$dbcharset = 'gbk'; // MySQL 字符集, 可选 'gbk', 'big5', 'utf8', 'latin1', 留空为按照论坛字符集设定
*/
//同步登录 Cookie 设置
$cookiedomain = ''; // cookie 作用域
$cookiepath = '/'; // cookie 作用路径
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
// 把添加应用生成的 配置代码粘贴到这里,删除原有的同名项目
define('UC_CONNECT', 'mysql');
define('UC_DBHOST', 'localhost');
define('UC_DBUSER', 'root');
define('UC_DBPW', 'mysql');
define('UC_DBNAME', 'ucenter');
define('UC_DBCHARSET', 'utf8');
define('UC_DBTABLEPRE', '`ucenter`.uc_');
define('UC_DBCONNECT', '0');
define('UC_KEY', '1b9bKBqYJxQzw10JEB41CtF71KM');
define('UC_API', 'http://localhost/ucenter');
define('UC_CHARSET', 'utf-8');
define('UC_IP', '127.0.0.1'); //生成的配置项中此项为空,为了方便通信建议写上UC所在服务器IP
define('UC_APPID', '2');
define('UC_PPP', '20');
//应用生成配置项 结束
/*
以下是应用本身的数据库链接配置
先全部注释掉
//ucexample_2.php 用到的应用程序数据库连接参数
$dbhost = 'localhost'; // 数据库服务器
$dbuser = 'root'; // 数据库用户名
$dbpw = ''; // 数据库密码
$dbname = 'ucenter'; // 数据库名
$pconnect = 0; // 数据库持久连接 0=关闭, 1=打开
$tablepre = 'example_'; // 表名前缀, 同一数据库安装多个论坛请修改此处
$dbcharset = 'gbk'; // MySQL 字符集, 可选 'gbk', 'big5', 'utf8', 'latin1', 留空为按照论坛字符集设定
*/
//同步登录 Cookie 设置
$cookiedomain = ''; // cookie 作用域
$cookiepath = '/'; // cookie 作用路径
|
原理上做到这里应该就可以正常通信了,但是我们到用户中心中查看应用列表发现测试应用仍然无法通信如下图:
示例中代码存在错误导致应用依然无法通信
官方提供的示例中存在几处错误(疑代码是直接从Discuz中复制出来的没有修正)导致示例配置好后却依然无法通信。没关系,修按照下面的步骤修正基础即可:
1、(examples/api/uc.php)第27行左右DISCUZ_ROOT宏定义修改为:
define('DISCUZ_ROOT', substr(dirname(__FILE__),0,-3));
2、(examples/api/uc.php)注释掉59-63行:
//require_once DISCUZ_ROOT.'./include/db_mysql.class.php';
//$GLOBALS['db'] = new dbstuff;
//$GLOBALS['db']->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset);
//$GLOBALS['tablepre'] = $tablepre;
//unset($dbhost, $dbuser, $dbpw, $dbname, $pconnect);
$uc_note = new uc_note();
exit($uc_note->$get['action']($get, $post));
修改以上两步之后应该就可以通信成功了,如果还是无法通信的话注意检查上面全部的步骤哦。
通信成功后我们可以试着访问examples/ucexample_1.php 用Discuz安装时候的账户登录下看看哦。如若出现乱码请选择下浏览器端编码为程序的编码,如下图。
乱码的修改下浏览器端编码 或在文件中输出UTF8 header
用Discuz账户登录成功查看源代码如下图:
登录成功,并通知DISCUZ同步登录
这时候访问下Discuz发现admin账户已经是登录状态了,同时在Discuz中退出和登录操作examples中都能同步。到这里双向同步已经实现,童鞋们可以根据示例代码修改自己的应用做整合了。有任何疑问都可以在这里留言,共同探讨。
下载:实现双向通信UTF8示例(.68M)
分享到:
相关推荐
c#接口示例c#接口示例c#接口示例c#接口示例c#接口示例c#接口示例c#接口示例
谷歌官方提供的Android平台上的关于低功耗蓝牙开发的示例代码,该示例包含了Android低功耗蓝牙开发的完整过程:(低功耗蓝牙可简称“BLE”) 1、声明蓝牙权限 2、设置BLE 3、扫描BLE 4、连接到GATT服务器(即低...
gRPC的通信方式-客户端流式、服务端流式、双向流式在Java的调用示例代码;gRPC的通信方式-客户端流式、服务端流式、双向流式在Java的调用示例代码.;gRPC的通信方式-客户端流式、服务端流式、双向流式在Java的调用示例...
主要是对dbus进行c++封装成了一个dbus类,对外保留发送和接收的接口,方便使用;另外实现多进程dbus的双向通信测试,详细说明见博客的编译(移植)以及双向通信使用例程>>
WPF中使用SignalR 进行双向通信 基于(.net 6)
Ice的详细图解安装过程,入门教程以及示例代码
从其他地方搜集的别人的作品,我觉得写的通俗,实用。与大家分享下。
主要介绍了百度实时推送api接口应用示例,非常的实用,有需要的朋友可以参考下
官方HelloPhone 示例教程,windows phone 应用开发基础教程。
restful接口示例代码restful接口示例代码restful接口示例代码restful接口示例代码
这是一个开发oracle接口程序的示例源码这是一个开发oracle接口程序的示例源码
FANUC二次开发实例源代码 ,包含详细库文件及函数说明文档,FANUC宏参数读写、CNC程序查找、删除和上传、刀具寿命的读写等功能。
盛付通支付接口开发简单示例
《应用层通信协议开发浅析》博文代码: 基于TLV的应用层协议开发示例。
一个网络通信开发库示例源码,使用C++开发,封装了TCP和UDP的socket函数,封装了完成端口、WSAEventSelect、select等3种winsock I/O模型,并结合线程池+内存池模式,支持高并发。
里面包含了"Android_Launcher应用开发.pdf"和本书提供的"示例代码",需要有一定的Android基础,适合Android进阶
MFC读取utf8下的txt文档 非常常用 希望有所帮助 附件是整个vs2010工程文件夹 解压直接使用
用于Usb双向通信的VC++程序 一个靠USB设置的VID、PID、PVN来查找设备 并进行设备进行读写操作的示例
各种开发语言示例调用HTTP接口(示例中默认HTTP接口编码为gb2312)共7页.pdf.zip