发布于 2015-11-17 07:57:14 | 308 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

Discuz!社区论坛系统

Crossday Discuz! Board(简称 Discuz!)是北京康盛新创科技有限责任公司推出的一套通用的社区论坛软件系统。自2001年6月面世以来,Discuz!已拥有13年以上的应用历史和200多万网站用户案例,是全球成熟度最高、覆盖率最大的论坛软件系统之一。


一查.

3种解决途径

  1. UCenter.
  2. 直接和数据库交互.
  3. 模拟登录.

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



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务