最近在做一个整合 UCenter 的项目,下载了一份 uc开发手册,测试结果是这样的:
通过uch 登陆 可以同步登陆到论坛,但是不能登陆到 ucexample_1.php 和 2 这个开发手册自带的例子中。
但是通过ucexample_1.php 和 2 的例子登陆是可以登陆到 uch 和 论坛的
所有都是在配置正确的前提下进行,在 uc管理中的 应用管理 通信是要成功的。
那么问题是如何出现的呢?
看一下 api/uc.php
99-110行
- //同步登录 API 接口
- include './include/db_mysql.class.php';
- $db = new dbstuff;
- $db->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect);
- unset($dbhost, $dbuser, $dbpw, $dbname, $pconnect);
- $uid = intval($get['uid']);
- $query = $db->query("SELECT uid, username FROM {$tablepre}members WHERE uid='$uid'");
- if($member = $db->fetch_array($query)) {
- header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
- dsetcookie('Example_auth', authcode($member['uid']."\t".$member['username'], 'ENCODE'), 86400 * 365);
- }
复制代码
你会发现是一个读取数据库的操作,读取到才能设置咱们自己应用的 cookies 的
那么样例中似乎说的是要连接到自己的数据库中,可想如果咱们自己的数据库没有会员数据那么就登陆不成功了,所以解决办法就是读取uc自己的数据库!
在 app 的 config.inc.php 中
21-28行,不要看提示说是设置自己的,咱们直接设置 uc 的数据库
- //ucexample_2.php 用到的应用程序数据库连接参数
- $dbhost = 'localhost'; // 数据库服务器
- $dbuser = 'root'; // 数据库用户名
- $dbpw = ''; // 数据库密码
- $dbname = 'uc'; // 数据库名
- $pconnect = 0; // 数据库持久连接 0=关闭, 1=打开
- $tablepre = 'uc_'; // 表名前缀, 同一数据库安装多个论坛请修改此处
- $dbcharset = 'gbk'; // MySQL 字符集, 可选 'gbk', 'big5', 'utf8', 'latin1', 留空为按照论坛字符集设定
然后你在测试一下,通过论坛 uch登陆 也可以直接同步登陆到 示例的应用中了!
转自:http://www.discuz.net/viewthread.php?tid=1043330&extra=page%3D1&frombbs=1