4. 深入研究 UCenter API 之 网站搭建(转载)
- 1. 深入研究 UCenter API 之 开篇 (转载)
- 2. 深入研究 UCenter API 之 通讯原理(转载)
- 3. 深入研究 UCenter API 之 加密与解密(转载)
- 4. 深入研究 UCenter API 之 网站搭建(转载)
- 5. 深入研究 UCenter API 之 MVC 网站下的用法(转载)
- 6. 下载地址:UCenter API For .Net 在 CodePlex 上发布啦!(转载)
康盛旗下产品的搭建
1、UCenter
这个当然是最基本的东西,安装起来也很简单,官方就有教程
http://faq.comsenz.com/userguide/x/install.html
安装完成后,因为还没有安装别的应用,所以应用数量是:0
2、Discuz
如果仅仅是为了用 UCenter,那有点得不偿失了,一般都会配上论坛
这里采用的是 Discuz! 7.2
http://faq.comsenz.com/userguide/discuz/install.html
这里没有什么难度,网上有许多教程
Asp.net 测试网站的搭建
新建网站
既然是 UCenter 和 Asp.net 通讯,那肯定要搭建一个 Asp.net 的网站了
为了 方便测试,我们最好把网站直接在 IIS 中调试
新建网站应用程序 — 打开属性页面
这步非不要操作,但是可以模拟真实的场景,并且还可以在 IIS 里调试
设置完后我们看一下 IIS 里的情况(我把 UCenter 和 Discuz 挂在 IIS 下了)
在 UCenter 下新建应用程序
登录后点添加新应用
按照这张图配置一下
这里就一个地方和配置 php 的网站不同,就是“应用接口文件名称”
当然你也可以用 .php 然后配置 IIS,但是这个多麻烦?用 ashx 是最方便的,在后面会有详解,到时候你就知道为什么了
提交后复制一下配置信息,后面有用
配置Asp.net网站
接下来我们需要把配置文件写入 Asp.net 的网站的 Web.config 中
乍一看,这配置是 php 格式的!
但这里有一份完整的配置信息,只要替换对应的地方就行:
<!--客户端版本--> <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="FD144298AF7E4797A66ACC0C18C97EA3"/> <!--[必填]UCenter地址--> <add key="UC_API" value="http://localhost/ucenter"/> <!--[必填]默认编码--> <add key="UC_CHARSET" value="utf-8"/> <!--[非必填]UCenter IP--> <add key="UC_IP" value=""/> <!--[必填]应用ID--> <add key="UC_APPID" value="2"/>
其中,除了标记必填的,别的都可以不填,默认值就是这个
Asp.net 网站算是搭建成功了,但是现在还没有用到那个类库呢!
类库的使用方法
类库概况
类库分为以下几个部分
- Api 用于提供给 UCenter 调用的结构
- Client 用于调用 UCenter 的接口
- Model 调用过程中的一些数据封装
- UcConfig 静态类,读取上面的配置文件信息
- UcUtility 一些常用函数
- App.config 配置文件示例
调用 UCenter API
这步非常简单,只要配置好前面的东西,然后简单地调用一个类就行了。
1 IUcClient client = new UcClient(); 2 var user = client.UserLogin("admin", "admin");//登陆 3 if (user.Success)//判断是否登陆成功 4 { 5 client.PmSend(0, 0, "公告", "测试公告", user.Uid);//给该用户发送系统消息 6 }
那具体有哪些函数可以被调用呢?可以看一下IUcClient接口
1 using System.Collections.Generic; 2 3 namespace DS.Web.UCenter.Client 4 { 5 ///<summary> 6 /// UcApi客户端 7 ///</summary> 8 public interface IUcClient 9 { 10 /// <summary> 11 /// 用户注册 12 /// </summary> 13 /// <param name="userName">用户名</param> 14 /// <param name="passWord">密码</param> 15 /// <param name="email">Email</param> 16 /// <param name="questionId">登陆问题</param> 17 /// <param name="answer">答案</param> 18 /// <returns></returns> 19 UcUserRegister UserRegister(string userName, string passWord, string email, int questionId = 0, string answer = ""); 20 21 /// <summary> 22 /// 用户登陆 23 /// </summary> 24 /// <param name="userName">用户名/Uid/Email</param> 25 /// <param name="passWord">密码</param> 26 /// <param name="loginMethod">登录方式</param> 27 /// <param name="checkques">需要登陆问题</param> 28 /// <param name="questionId">问题ID</param> 29 /// <param name="answer">答案</param> 30 /// <returns></returns> 31 UcUserLogin UserLogin(string userName, string passWord, LoginMethod loginMethod = LoginMethod.UserName, bool checkques = false, int questionId = 0, string answer = ""); 32 33 /// <summary> 34 /// 得到用户信息 35 /// </summary> 36 /// <param name="userName">用户名</param> 37 /// <returns></returns> 38 UcUserInfo UserInfo(string userName); 39 40 /// <summary> 41 /// 得到用户信息 42 /// </summary> 43 /// <param name="uid">Uid</param> 44 /// <returns></returns> 45 UcUserInfo UserInfo(int uid); 46 47 /// <summary> 48 /// 更新用户信息 49 /// 更新资料需验证用户的原密码是否正确,除非指定 ignoreoldpw 为 1。 50 /// 如果只修改 Email 不修改密码,可让 newpw 为空; 51 /// 同理如果只修改密码不修改 Email,可让 email 为空。 52 /// </summary> 53 /// <returns></returns> 54 UcUserEdit UserEdit(string userName, string oldPw, string newPw, string email, bool ignoreOldPw = false, int questionId = 0, string answer = ""); 55 56 /// <summary> 57 /// 删除用户 58 /// </summary> 59 /// <param name="uid">Uid</param> 60 /// <returns></returns> 61 bool UserDelete(params int[] uid); 62 63 /// <summary> 64 /// 删除用户头像 65 /// </summary> 66 /// <param name="uid">Uid</param> 67 void UserDeleteAvatar(params int[] uid); 68 69 /// <summary> 70 /// 同步登陆 71 /// </summary> 72 /// <param name="uid">Uid</param> 73 /// <returns>同步登陆的 Html 代码</returns> 74 string UserSynlogin(int uid); 75 76 /// <summary> 77 /// 同步登出 78 /// </summary> 79 /// <returns>同步登出的 Html 代码</returns> 80 string UserSynLogout(); 81 82 /// <summary> 83 /// 检查 Email 格式 84 /// </summary> 85 /// <param name="email">Email</param> 86 /// <returns></returns> 87 UcUserCheckEmail UserCheckEmail(string email); 88 89 /// <summary> 90 /// 增加受保护用户 91 /// </summary> 92 /// <param name="admin">操作管理员</param> 93 /// <param name="userName">用户名</param> 94 /// <returns></returns> 95 bool UserAddProtected(string admin, params string[] userName); 96 97 /// <summary> 98 /// 删除受保护用户 99 /// </summary> 100 /// <param name="admin">操作管理员</param> 101 /// <param name="userName">用户名</param> 102 /// <returns></returns> 103 bool UserDeleteProtected(string admin, params string[] userName); 104 105 /// <summary> 106 /// 得到受保护用户 107 /// </summary> 108 /// <returns></returns> 109 UcUserProtecteds UserGetProtected(); 110 111 /// <summary> 112 /// 合并用户 113 /// </summary> 114 /// <param name="oldUserName">老用户名</param> 115 /// <param name="newUserName">新用户名</param> 116 /// <param name="uid">Uid</param> 117 /// <param name="passWord">密码</param> 118 /// <param name="email">Email</param> 119 /// <returns></returns> 120 UcUserMerge UserMerge(string oldUserName, string newUserName, int uid, string passWord, string email); 121 122 /// <summary> 123 /// 移除重名用户记录 124 /// </summary> 125 /// <param name="userName">用户名</param> 126 void UserMergeRemove(string userName); 127 128 /// <summary> 129 /// 得到用户积分 130 /// </summary> 131 /// <param name="appId">应用程序Id</param> 132 /// <param name="uid">Uid</param> 133 /// <param name="credit">积分编号</param> 134 /// <returns></returns> 135 int UserGetCredit(int appId, int uid, int credit); 136 137 /// <summary> 138 /// 检查新消息 139 /// </summary> 140 /// <param name="uid">Uid</param> 141 /// <returns></returns> 142 UcPmCheckNew PmCheckNew(int uid); 143 144 /// <summary> 145 /// 发送短消息 146 /// </summary> 147 /// <param name="fromUid">发件人用户 ID,0 为系统消息</param> 148 /// <param name="replyPmId">回复的消息 ID,0:发送新的短消息,大于 0:回复指定的短消息</param> 149 /// <param name="subject">消息标题</param> 150 /// <param name="message">消息内容</param> 151 /// <param name="msgTo">收件人ID</param> 152 /// <returns></returns> 153 UcPmSend PmSend(int fromUid, int replyPmId, string subject, string message, params int[] msgTo); 154 155 /// <summary> 156 /// 发送短消息 157 /// </summary> 158 /// <param name="fromUid">发件人用户 ID,0 为系统消息</param> 159 /// <param name="replyPmId">回复的消息 ID,0:发送新的短消息,大于 0:回复指定的短消息</param> 160 /// <param name="subject">消息标题</param> 161 /// <param name="message">消息内容</param> 162 /// <param name="msgTo">收件人用户名</param> 163 /// <returns></returns> 164 UcPmSend PmSend(int fromUid, int replyPmId, string subject, string message, params string[] msgTo); 165 166 /// <summary> 167 /// 删除短消息 168 /// </summary> 169 /// <param name="uid">Uid</param> 170 /// <param name="folder">文件夹</param> 171 /// <param name="pmIds">短消息ID</param> 172 /// <returns>删除的数量</returns> 173 int PmDelete(int uid, PmDeleteFolder folder, params int[] pmIds); 174 175 /// <summary> 176 /// 删除会话 177 /// </summary> 178 /// <param name="uid">发件人</param> 179 /// <param name="toUids">收件人</param> 180 /// <returns>删除的数量</returns> 181 int PmDelete(int uid, params int[] toUids); 182 183 /// <summary> 184 /// 修改阅读状态 185 /// </summary> 186 /// <param name="uid">发件人</param> 187 /// <param name="toUids">收件人</param> 188 /// <param name="pmIds">短消息ID</param> 189 /// <param name="readStatus">阅读状态</param> 190 void PmReadStatus(int uid, int toUids, int pmIds = 0, ReadStatus readStatus = ReadStatus.Readed); 191 192 /// <summary> 193 /// 修改阅读状态 194 /// </summary> 195 /// <param name="uid">发件人</param> 196 /// <param name="toUids">收件人数组</param> 197 /// <param name="pmIds">短消息ID数组</param> 198 /// <param name="readStatus">阅读状态</param> 199 void PmReadStatus(int uid, IEnumerable<int> toUids, IEnumerable<int> pmIds, ReadStatus readStatus = ReadStatus.Readed); 200 201 /// <summary> 202 /// 获取短消息列表 203 /// </summary> 204 /// <param name="uid">Uid</param> 205 /// <param name="page">当前页编号,默认值 1</param> 206 /// <param name="pageSize">每页最大条目数,默认值 10</param> 207 /// <param name="folder">短消息所在的文件夹</param> 208 /// <param name="filter">过滤方式</param> 209 /// <param name="msgLen">截取短消息内容文字的长度,0 为不截取,默认值 0</param> 210 /// <returns></returns> 211 UcPmList PmList(int uid, int page = 1, int pageSize = 10, PmReadFolder folder = PmReadFolder.NewBox, PmReadFilter filter = PmReadFilter.NewPm, int msgLen = 0); 212 213 /// <summary> 214 /// 获取短消息内容 215 /// 本接口函数用于返回指定用户的指定消息 ID 的消息,返回的数据中包含针对这个消息的回复。 216 /// 如果指定 touid 参数,那么短消息将列出所有 uid 和 touid 之间的短消息,daterange 可以指定返回消息的日期范围。 217 /// </summary> 218 /// <param name="uid">Uid</param> 219 /// <param name="pmId">短消息ID</param> 220 /// <param name="toUid">收件人ID</param> 221 /// <param name="dateRange">日期范围</param> 222 /// <returns></returns> 223 UcPmView PmView(int uid, int pmId, int toUid = 0, DateRange dateRange = DateRange.Today); 224 225 /// <summary> 226 /// 获取单条短消息内容 227 /// </summary> 228 /// <param name="uid">Uid</param> 229 /// <param name="type">类型</param> 230 /// <param name="pmId">短消息ID</param> 231 /// <returns></returns> 232 UcPm PmViewNode(int uid, ViewType type = ViewType.Specified, int pmId = 0); 233 234 /// <summary> 235 /// 忽略未读消息提示 236 /// </summary> 237 /// <param name="uid">Uid</param> 238 void PmIgnore(int uid); 239 240 /// <summary> 241 /// 得到黑名单 242 /// </summary> 243 /// <param name="uid">Uid</param> 244 /// <returns></returns> 245 UcPmBlacklsGet PmBlacklsGet(int uid); 246 247 /// <summary> 248 /// 设置黑名单为禁止所有人(清空原数据) 249 /// </summary> 250 /// <param name="uid">Uid</param> 251 /// <returns></returns> 252 bool PmBlacklsSetAll(int uid); 253 254 /// <summary> 255 /// 设置黑名单(清空原数据) 256 /// </summary> 257 /// <param name="uid">Uid</param> 258 /// <param name="userName">黑名单用户名</param> 259 /// <returns></returns> 260 bool PmBlacklsSet(int uid, params string[] userName); 261 262 /// <summary> 263 /// 添加黑名单为禁止所有人 264 /// </summary> 265 /// <param name="uid">Uid</param> 266 /// <returns></returns> 267 bool PmBlacklsAddAll(int uid); 268 269 /// <summary> 270 /// 增加黑名单 271 /// </summary> 272 /// <param name="uid">Uid</param> 273 /// <param name="userName">黑名单用户名</param> 274 /// <returns></returns> 275 bool PmBlacklsAdd(int uid, params string[] userName); 276 277 /// <summary> 278 /// 删除黑名单中的禁止所有人 279 /// </summary> 280 /// <param name="uid">Uid</param> 281 /// <returns></returns> 282 void PmBlacklsDeleteAll(int uid); 283 284 /// <summary> 285 /// 删除黑名单 286 /// </summary> 287 /// <param name="uid">Uid</param> 288 /// <param name="userName">黑名单用户名</param> 289 void PmBlacklsDelete(int uid, params string[] userName); 290 291 /// <summary> 292 /// 增加好友 293 /// </summary> 294 /// <param name="uid">Uid</param> 295 /// <param name="friendId">好友ID</param> 296 /// <param name="comment">备注</param> 297 /// <returns></returns> 298 bool UcFriendAdd(int uid, int friendId, string comment = ""); 299 300 /// <summary> 301 /// 删除好友 302 /// </summary> 303 /// <param name="uid">Uid</param> 304 /// <param name="friendIds">好友ID</param> 305 /// <returns></returns> 306 bool UcFriendDelete(int uid, params int[] friendIds); 307 308 /// <summary> 309 /// 获取好友总数 310 /// </summary> 311 /// <param name="uid">Uid</param> 312 /// <param name="direction">方向</param> 313 /// <returns>好友数目</returns> 314 int UcFriendTotalNum(int uid, FriendDirection direction = FriendDirection.All); 315 316 /// <summary> 317 /// 好友列表 318 /// </summary> 319 /// <param name="uid">Uid</param> 320 /// <param name="page">当前页编号</param> 321 /// <param name="pageSize">每页最大条目数</param> 322 /// <param name="totalNum">好友总数</param> 323 /// <param name="direction">方向</param> 324 /// <returns></returns> 325 UcFriends UcFriendList(int uid, int page = 1, int pageSize = 10, int totalNum = 10, FriendDirection direction = FriendDirection.All); 326 327 /// <summary> 328 /// 积分兑换请求 329 /// </summary> 330 /// <param name="uid">Uid</param> 331 /// <param name="from">原积分</param> 332 /// <param name="to">目标积分</param> 333 /// <param name="toAppId">目标应用ID</param> 334 /// <param name="amount">积分数额</param> 335 /// <returns></returns> 336 bool UcCreditExchangeRequest(int uid, int from, int to, int toAppId, int amount); 337 338 ///<summary> 339 /// 修改头像 340 ///</summary> 341 ///<param name="uid">Uid</param> 342 ///<param name="type"></param> 343 ///<returns></returns> 344 string Avatar(int uid, AvatarType type = AvatarType.Virtual); 345 346 /// <summary> 347 /// 得到头像地址 348 /// </summary> 349 /// <param name="uid">Uid</param> 350 /// <param name="size">大小</param> 351 /// <param name="type">类型</param> 352 /// <returns></returns> 353 string AvatarUrl(int uid,AvatarSize size,AvatarType type = AvatarType.Virtual); 354 355 /// <summary> 356 /// 检查头像是否存在 357 /// </summary> 358 /// <param name="uid"></param> 359 /// <param name="size"></param> 360 /// <param name="type"></param> 361 /// <returns></returns> 362 bool AvatarCheck(int uid, AvatarSize size = AvatarSize.Middle, AvatarType type = AvatarType.Virtual); 363 364 /// <summary> 365 /// 获取标签数据 366 /// </summary> 367 /// <param name="tagName">标签名</param> 368 /// <param name="number">应用程序ID对应的数量</param> 369 /// <returns></returns> 370 UcTags TagGet(string tagName, IEnumerable<KeyValuePair<string, string>> number); 371 372 /// <summary> 373 /// 添加事件 374 /// </summary> 375 /// <param name="icon">图标类型,如:thread、post、video、goods、reward、debate、blog、album、comment、wall、friend</param> 376 /// <param name="uid">Uid</param> 377 /// <param name="userName">用户名</param> 378 /// <param name="titleTemplate">标题模板</param> 379 /// <param name="titleData">标题数据数组</param> 380 /// <param name="bodyTemplate">内容模板</param> 381 /// <param name="bodyData">模板数据</param> 382 /// <param name="bodyGeneral">相同事件合并时用到的数据:特定的数组,只有两项:name、link,保留</param> 383 /// <param name="targetIds">保留</param> 384 /// <param name="images">相关图片的 URL 和链接地址。一个图片地址,一个链接地址</param> 385 /// <returns></returns> 386 int FeedAdd(FeedIcon icon, int uid, string userName, string titleTemplate, string titleData, string bodyTemplate, string bodyData, string bodyGeneral, string targetIds, params string[] images); 387 388 /// <summary> 389 /// 得到Feed 390 /// </summary> 391 /// <param name="limit">数量限制</param> 392 /// <returns></returns> 393 UcFeeds FeedGet(int limit); 394 395 /// <summary> 396 /// 得到应用列表 397 /// </summary> 398 /// <returns></returns> 399 UcApps AppList(); 400 401 /// <summary> 402 /// 添加邮件到队列 403 /// </summary> 404 /// <param name="subject">标题</param> 405 /// <param name="message">内容</param> 406 /// <param name="uids">Uid</param> 407 /// <returns></returns> 408 UcMailQueue MailQueue(string subject, string message,params int[] uids); 409 410 /// <summary> 411 /// 添加邮件到队列 412 /// </summary> 413 /// <param name="subject">标题</param> 414 /// <param name="message">内容</param> 415 /// <param name="emails">目标Email</param> 416 /// <returns></returns> 417 UcMailQueue MailQueue(string subject, string message, params string[] emails); 418 419 /// <summary> 420 /// 添加邮件到队列 421 /// </summary> 422 /// <param name="subject">标题</param> 423 /// <param name="message">内容</param> 424 /// <param name="uids">Uid</param> 425 /// <param name="emails">目标email</param> 426 /// <returns></returns> 427 UcMailQueue MailQueue(string subject, string message, int[] uids, string[] emails); 428 429 /// <summary> 430 /// 添加邮件到队列 431 /// </summary> 432 /// <param name="subject">标题</param> 433 /// <param name="message">内容</param> 434 /// <param name="fromMail">发信人,可选参数,默认为空,uc后台设置的邮件来源作为发信人地址</param> 435 /// <param name="charset">邮件字符集,可选参数,默认为gbk</param> 436 /// <param name="htmlOn">是否是html格式的邮件,可选参数,默认为FALSE,即文本邮件</param> 437 /// <param name="level">邮件级别,可选参数,默认为1,数字大的优先发送,取值为0的时候立即发送,邮件不入队列</param> 438 /// <param name="uids">Uid</param> 439 /// <param name="emails">目标email</param> 440 /// <returns></returns> 441 UcMailQueue MailQueue(string subject,string message,string fromMail,string charset,bool htmlOn,int level,int[] uids,string[] emails); 442 } 443 }
这份 API 是根据 UCenter API 开发手册开发的
所有的API都在里面了,不用考虑实现细节,配置好以后直接调用即可!
供 UCenter 调用的接口
这里,我们现在网站下新建一个叫 API 的文件夹(一定要叫 API)
然后再创建一个 ashx 文件(文件名和前面的配置对应即可,上面用的是 uc.ashx ,只要对应即刻,没必要用 uc.php)
结构如下:
uc.ashx 修改如下:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using DS.Web.UCenter.Api; 6 7 namespace DS.Web.UCenter.Website.API 8 { 9 /// <summary> 10 /// Summary description for uc 11 /// </summary> 12 public class uc:UcApiBase 13 { 14 public override ApiReturn DeleteUser(IEnumerable<int> ids) 15 { 16 throw new NotImplementedException(); 17 } 18 19 public override ApiReturn RenameUser(int uid, string oldUserName, string newUserName) 20 { 21 throw new NotImplementedException(); 22 } 23 24 public override UcTagReturns GetTag(string tagName) 25 { 26 throw new NotImplementedException(); 27 } 28 29 public override ApiReturn SynLogin(int uid) 30 { 31 throw new NotImplementedException(); 32 } 33 34 public override ApiReturn SynLogout() 35 { 36 throw new NotImplementedException(); 37 } 38 39 public override ApiReturn UpdatePw(string userName, string passWord) 40 { 41 throw new NotImplementedException(); 42 } 43 44 public override ApiReturn UpdateBadWords(UcBadWords badWords) 45 { 46 throw new NotImplementedException(); 47 } 48 49 public override ApiReturn UpdateHosts(UcHosts hosts) 50 { 51 throw new NotImplementedException(); 52 } 53 54 public override ApiReturn UpdateApps(UcApps apps) 55 { 56 throw new NotImplementedException(); 57 } 58 59 public override ApiReturn UpdateClient(UcClientSetting client) 60 { 61 throw new NotImplementedException(); 62 } 63 64 public override ApiReturn UpdateCredit(int uid, int credit, int amount) 65 { 66 throw new NotImplementedException(); 67 } 68 69 public override UcCreditSettingReturns GetCreditSettings() 70 { 71 throw new NotImplementedException(); 72 } 73 74 public override ApiReturn GetCredit(int uid, int credit) 75 { 76 throw new NotImplementedException(); 77 } 78 79 public override ApiReturn UpdateCreditSettings(UcCreditSettings creditSettings) 80 { 81 throw new NotImplementedException(); 82 } 83 } 84 }
本来呢,ashx 继承的是 IHttpHandler ,但是呢,我们需要修改一下,让它继承 UcApiBase
它是一个抽象类,重写抽象方法即可。
但是具体怎么用呢?
这些函数不是给你调用的,是给 UCenter 调用的,你要做的就是写一些逻辑代码。比如 UCenter 告诉你 有人登陆了 (SynLogin函数)
那你应该做点什么呢? 写 Cookie ?写 Session ? 都行~
同样,当 UCenter 同步登出的时候,你也需要写一些逻辑代码,清理 Cookie 或者 Session
另外几个函数是干嘛的呢? 参考 UCenter 接口开发手册中的 API接口 这个章节即可