本帖最后由 zwjdujin 于 2013-1-1 19:20 编辑
| 资源: | | 摩尼教附件下载: | | UCenter会员通行证接口 (48.38KB) |
在PHPWEB1.1.6以后,可以通过后台的会员模块参数设置,设置UCENTER接口参数,设置参数前请先将本接口程序包上传到网站的api目录,如果网站没有api目录,可先创建api目录,正确的结构是:
/api/uc.php
/api/uc_api/ 由于UCenter在第三方应用的接口方面还存在很多问题,PHPWEB提供的接口仅包括用户注册、登录和用户密码修改三部分 一、用户注册
1、在PHPWEB用户注册时,校验UCenter用户是否存在,不存在则通过接口通知UCenter的全部应用增加该用户
2、如果其它应用也是PHPWEB,将直接增加用户,如果是DISCUZ!等应用,则需激活用户
3、本接口在测试时发现,在DISCUZ!注册用户时未通知PHPWEB增加用户,疑DISCUZ!本身存在不兼容缺陷(和UCenter开发手册不一致);针对这一问题,PHPWEB在登录时如果发现UCenter中存在用户且通过密码校验,则直接登录并在PHPWEB添加用户 二、用户登录
在PHPWEB用户登录时,先校验UCenter用户
1、如果用户通过UCenter校验,再校验本系统用户密码,全部通过登录成功,并通知其它应用进入登录状态
2、如果用户在UCenter不存在,而在PHPWEB通过校验,则通知UCenter增加用户
3、如果用户在UCenter存在但密码不一致,而PHPWEB校验通过,则仅登录当前PHPWEB系统,不通知其它应用进入登录状态
4、本接口在测试时发现,在PHPWEB登录时成功通知DISCUZ!和其它PHPWEB应用进入登录状态,但在DISCUZ!登录时,PHPWEB的UC.PHP未能收到任何通知,疑为DISCUZ!的BUG 三、密码修改
1、在PHPWEB会员中心重设用户密码时,通知其它PHPWEB应用修改密码
2、UCenter原始程序在修改密码时,实际上并没有对密码进行传递,DISCUZ!自己的接收程序只是随机生成了新密码,并没有将密码修改为UCenter一致的密码(无言)
3、如果要使密码修改有效,请用户自行对UCenter的服务器端(uc_server)程序进行修改(UCenter 1.5.0)
1)UC后台更改密码后的通知程序:uc_server\control\admin\user.php 289行
原:
$_ENV['note']->add(‘updatepw’, ‘username=’.urlencode($username).’&password=’);
更改为:
$_ENV['note']->add(‘updatepw’, ‘username=’.urlencode($username).’&password=’.$orgpassword);
2)UC通知程序:uc_server\control\user.php 99行
原:
$_ENV['note']->add(‘updatepw’, ‘username=’.urlencode($username).’&password=’);
更改为:
$_ENV['note']->add(‘updatepw’, ‘username=’.urlencode($username).’&password=’.$newpw);
3)如果要让DISCUZ!修改密码后通知其它PHPWEB修改密码,则要修改Discuz!的uc_client\control\user.php 第99行
$_ENV['note']->add(‘updatepw’, ‘username=’.urlencode($username).’&password=’.$newpw);
当然,这个修改只能让DISCUZ!通知PHPWEB,而不能通知其它的DISCUZ!类应用,DISCUZ!的密码修改接收程序本身不支持修改密码 另外,UCenter在用户删除时,只传输了UID,没有传输username,作为独立的应用软件,是不可能让会员ID和UCenter的用户ID保持一致的,应该以username作为用户唯一性的参照比较合理 期待UCenter能更好地兼容第三方应用。 如有问题,请访问http://www.monijiao.com/?p=2902
|