discuz 用户同步,注册等
一查.
3种解决途径
- UCenter.
- 直接和数据库交互.
- 模拟登录.
1.
查看官方只有PHP的SDK.
而且只有SDK . 你想知道他怎么运作的。只能看PHP源码,可是不懂PHP.
随而放弃.
2.
完全不知道他加密的方式.
而且服务器限制也多。PASS
3.
看到一半发现,新需求是必须取消论坛注册.
于是回到了第一方案.
因为找到了一个解决办法,有人早就遇到这个问题并解决了. 如果要看原文请点击这里
首先他原理其实很简单.
就是你访问 discuz uc.php 你调用它的接口。
当 discuz 发生了删除创建之类的操作,就调用你自身的 接口.
当然这个接口已经规定好了.
接下来就很简单.
双方通信。
我的需求比较简单.
只需要登录我这个网站后,只用向discuz同步,discuz不用向我同步. 单方面的.
1. 你需要下载 他的项目,引用DLL即可 DS.Web.Ucenter
2. 在WebConfig配置
<appSettings> <!--客户端版本--> <add key="UC_CLIENT_VERSION" value="1.5.2"/> <!--发行时间--> <add key="UC_CLIENT_RELEASE" value="20101001"/> <!--API 开关(value类型:True False 默认值:True)--> <!--是否允许删除用户--> <add key="API_DELETEUSER" value="True"/> <!--是否允许重命名用户--> <add key="API_RENAMEUSER" value="True"/> <!--是否允许得到标签--> <add key="API_GETTAG" value="True"/> <!--是否允许同步登录--> <add key="API_SYNLOGIN" value="True"/> <!--是否允许同步登出--> <add key="API_SYNLOGOUT" value="True"/> <!--是否允许更改密码--> <add key="API_UPDATEPW" value="True"/> <!--是否允许更新关键字--> <add key="API_UPDATEBADWORDS" value="True"/> <!--是否允许更新域名解析缓存--> <add key="API_UPDATEHOSTS" value="True"/> <!--是否允许更新应用列表--> <add key="API_UPDATEAPPS" value="True"/> <!--是否允许更新客户端缓存--> <add key="API_UPDATECLIENT" value="True"/> <!--是否允许更新用户积分--> <add key="API_UPDATECREDIT" value="True"/> <!--是否允许向UCenter提供积分设置--> <add key="API_GETCREDITSETTINGS" value="True"/> <!--是否允许获取用户的某项积分--> <add key="API_GETCREDIT" value="True"/> <!--是否允许更新应用积分设置--> <add key="API_UPDATECREDITSETTINGS" value="True"/> <!--API 开关结束--> <!--返回值设置--> <!--返回成功(默认:1)--> <add key="API_RETURN_SUCCEED" value="1"/> <!--返回失败(默认:-1)--> <add key="API_RETURN_FAILED" value="-1"/> <!--返回禁用(默认:-2)--> <add key="API_RETURN_FORBIDDEN" value="-2"/> <!--返回值设置结束--> <!--[必填]通信密钥--> <add key="UC_KEY" value=""/> <!--[必填]UCenter地址--> <add key="UC_API" value=""/> <!--[必填]默认编码--> <add key="UC_CHARSET" value="utf-8"/> <!--[非必填]UCenter IP--> <add key="UC_IP" value=""/> <!--[必填]应用ID--> <add key="UC_APPID" value="2"/> </appSettings>
注意必填项.
一个是你论坛ucenter地址.
一个是你和论坛交互的私钥.
之后继续在UCenter中注册你的应用,填写好私钥,网址,以及对应的UC.ashx.
我在注册完成哪里加入一个事件,然后完成后调用 对应和UCenter同步的方法
var client = new UcClient(); var ucRegisterReturn = client.UserRegister(LoginWay.UserName, LoginWay.UserPWD, LoginWay.UserPWD + "@163.com");
就ok了.
如果你需要双向通信的话.
就需要UC.ashx 原文中有详细说明,我就不赘述了.
他已经解决了我目前的问题.
这里还有一个问题。
就是一旦通信失败怎么办.
目前记录在日志里. 然后手工同步.
理论上应该有一个任务计划。 自动去做这个事情。
不过这个就走远了..
任务计划,又涉及到明文保存用户名密码。 想想就伤.
暂时先这样吧
END
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。