利用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>
/// 同步登出
///