本文首发于www.ucapi.com,下篇预告:supesite与uchome等应用在同步登录时注意事项
原文如下:
如果你写了一个WEB程序,你又想与ucenter共用一个用户库,你会怎么做?
来吧,让我告诉你,只要几个简单的步骤就行了。
1、先到ucenter administrator建一个应用,在应用里配置完你的项目的地址,在UC_KEY那里随便输入一些字符串,越长越好。【在这里有配置通讯文件的名 称,好象是提示你在api目录下,你可以定义一个,默认是uc.php】。然后你会一直发现应用列表中,该应用一直是通讯失败。
2、生成应用后,在应用详情的最下方有一个textarea框,这个就是系统帮你生成的连接ucenter的配置文件 。
3、在您的项目根目录下建立一个api目录,里面放上刚才说的通讯文件,默认是uc.php
在通讯文件里定义一些常量,可以从uchome、supesite、等里面拷贝出来,其实就是一些返回值 的常量。
加载刚才ucenter administrator所生成的配置文件。
到comsenz的任何一个程序中拷贝一下authcode函数(一般在common.inc.php或者global.inc.php中)
写上简单的判断代码:
- $code = $_GET['code']; //取得GET回来的code变量
- //经过authcode解码后,转化为一个数组,这个数组里其实就有一些简单的验证信息,如:时间,传递过来的操作等
- parse_str(authcode($code, ‘DECODE’, UC_KEY), $get);
- //如果当前时间大于传递来的时间1小时,返回超时
- if(time() – $get['time'] > 3600) {
- exit(’Authracation has expiried’);
- }
- //如果转换出来的$get变量是空值 ,那肯定是出错了
- if(emptyempty($get)) {
- exit(’Invalid Request’);
- }
- //获取传递过来的操作
- $action = $get['action'];
- //写上一个简单的判断
- if ($action == ‘test’){
- exit(API_RETURN_SUCCEED);
- }
4、写完这样的代码后,去ucenter管理中心看一下应用列表,是不是通讯成功了?
其实那个通讯成功,就是发送了一个 action = test过来。所以当返回1的时候就直接成功了。
不过,由于exit();函数自身的状态,如果参数是字符串,则会直接输出,而如果参数是整数,则仅仅用来表示退出程序,而整数则代表了error code。
If status
is an integer, that value will also be used as the exit status. Exit statuses should be in the range 0 to 254, the exit status 255 is reserved by PHP and shall not be used. The status 0 is used to terminate the program successfully.
这时候,你就会发现,你必须得使用exit(”1″);才会真正的输出1。【当然,这是PHP的基础,与通信问题不大,在这里提出来,只是为了防止你明明写了exit(1),却不会输出而在那里拼命调试】
OK,到现在为止,一个简单的通讯就完成了。如果你需要更多的功能,可以参考一下server究竟提供了哪些服务,然后写上针对性的代码和判断就可以了。
本文没图,但我相信,说的应该够明白了吧?