利用UCenter实现discuz论坛和应用网站同步登录和退出功能
测试环境:Discuz! X3.2
、UCenter 1.6
、.Net Framework 4.0
进入Discuz 后台的UCenter应用管理页面
添加新应用
安装方式选择自定义安装、应用类型为其他。通信密钥可以自定义。开启同步登录和通知
集成UCenter API For DotNet
把DS.Web.UCenter添加到项目中
修改项目App.Config
配置信息:UC_KEY
添加新应用时填写的通信密钥UC_API
UCenter地址UC_APPID
应用网站在UCenter中的id
配置完毕后将网站运行起来,刷新一下应用列表界面
如果上述配置信息正确,就可以看到应用通信成功了。
调用UCenter API
以登录为例,实例化一个UcClient
对象,调用UserLogin
方法
IUcClient client = new UcClient();
var user = client.UserLogin("admin", "admin"); //登陆 if (user.Success) //判断是否登陆成功 { client.PmSend(0, 0, "公告", "测试公告", user.Uid); //给该用户发送系统消息 }
其他相关的API
using System.Collections.Generic;
namespace DS.Web.UCenter.Client
{
///<summary> /// UcApi客户端 ///</summary> public interface IUcClient { /// <summary> /// 用户注册 /// </summary> /// <param name="userName">用户名</param> /// <param name="passWord">密码</param> /// <param name="email">Email</param> /// <param name="questionId">登陆问题</param> /// <param name="answer">答案</param> /// <returns></returns> UcUserRegister UserRegister(string userName, string passWord, string email, int questionId = 0, string answer = ""); /// <summary> /// 用户登陆 /// </summary> /// <param name="userName">用户名/Uid/Email</param> /// <param name="passWord">密码</param> /// <param name="loginMethod">登录方式</param> /// <param name="checkques">需要登陆问题</param> /// <param name="questionId">问题ID</param> /// <param name="answer">答案</param> /// <returns></returns> UcUserLogin UserLogin(string userName, string passWord, LoginMethod loginMethod = LoginMethod.UserName, bool checkques = false, int questionId = 0, string answer = ""); /// <summary> /// 得到用户信息 /// </summary> /// <param name="userName">用户名</param> /// <returns></returns> UcUserInfo UserInfo(string userName); /// <summary> /// 得到用户信息 /// </summary> /// <param name="uid">Uid</param> /// <returns></returns> UcUserInfo UserInfo(int uid); /// <summary> /// 更新用户信息 /// 更新资料需验证用户的原密码是否正确,除非指定 ignoreoldpw 为 1。 /// 如果只修改 Email 不修改密码,可让 newpw 为空; /// 同理如果只修改密码不修改 Email,可让 email 为空。 /// </summary> /// <returns></returns> UcUserEdit UserEdit(string userName, string oldPw, string newPw, string email, bool ignoreOldPw = false, int questionId = 0, string answer = ""); /// <summary> /// 删除用户 /// </summary> /// <param name="uid">Uid</param> /// <returns></returns> bool UserDelete(params int[] uid); /// <summary> /// 删除用户头像 /// </summary> /// <param name="uid">Uid</param> void UserDeleteAvatar(params int[] uid); /// <summary> /// 同步登陆 /// </summary> /// <param name="uid">Uid</param> /// <returns>同步登陆的 Html 代码</returns> string UserSynlogin(int uid); /// <summary> /// 同步登出 ///