4. 深入研究 UCenter API 之 网站搭建(转载)

康盛旗下产品的搭建

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 格式的!

但这里有一份完整的配置信息,只要替换对应的地方就行:

View Code
<!--客户端版本-->
<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 网站算是搭建成功了,但是现在还没有用到那个类库呢!

 

 

类库的使用方法

类库概况

 

类库分为以下几个部分

  1. Api 用于提供给 UCenter 调用的结构
  2. Client 用于调用 UCenter 的接口
  3. Model 调用过程中的一些数据封装
  4. UcConfig 静态类,读取上面的配置文件信息
  5. UcUtility 一些常用函数
  6. 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接口

View Code
  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 修改如下:

View Code
 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接口 这个章节即可

 

 

posted on 2012-07-19 10:21  天涯人  阅读(3134)  评论(0编辑  收藏  举报

导航