[转载]新浪微博SDK for .Net 4.0第二版正式发布了。 – 林选臣 – 博客园.
首先感谢各位热心博友提出了意见和建议,有了大家的支持,做起事情来就更有动力了^_^
第二版SDK的一些新特性
- 采用了新浪官方主推的OAuth2.0进行授权和认证
- 所有接口都升级到了官方V2版的API,也就是说可以用官方V2版的API机型操作了
- 参考了官方PHP版的SDK,将授权认证的方法和API操作的方法独立成了两个类,逻辑上更清晰了
使用方法
第一步:授权认证
传统方式(适用于Web项目)
- 初始化OAuth类
- 获取Authorize地址
- 访问Authorize地址并进行授权,取得code
- 使用OAuth类的GetAccessTokenByAuthorizationCode方法获得AccessToken
- 完成
模拟登录方式(适用于Winform项目和其他项目类型)
- 初始化OAuth类
- 调用OAuth类中的ClientLogin方法,传入账号、密码以及绑定回调地址(ClientLogin方法模拟了上述整个授权过程,实现了一件登录和授权)
- 完成
第二步:实例化操作类
至此,授权完成了。接下来用刚才的OAuth作为参数来实例化一个Client操作类。
Client实例化以后,通过API命名空间,即可调用各种方法。
简单的使用案例
基于正常的授权认证流程
//初始化oAuth,准备认证 var oauth = new NetDimension.Weibo.OAuth("1028898141", "78be07c9bcfa30b7871788d3778ce131"); /* * 正常的流程或Web流程: * 1. 获取授权地址 * 2. 访问授权地址 * 3. 授权成功后自动跳转至callback指定的网站,并获得code * 4. 通过code换取access token */ var url = oauth.GetAuthorizeURL("https://api.weibo.com/oauth2/default.html", ResponseType.Code);//根据授权方法,获得授权地址。 System.Diagnostics.Process.Start(url);//模拟弹窗,Console方式直接打开了浏览器,Web项目可以根据需求来使用iframe、新窗口等打开此页面。 //打开浏览器,进行授权流程,之后会跳转到callback指定的网址,并获得code //填写刚才得到的code Console.Write("请填写浏览器地址中的Code参数:"); var code = Console.ReadLine(); //根据code获取AccessToken var accessToken = oauth.GetAccessTokenByAuthorizationCode(code, "https://api.weibo.com/oauth2/default.html");//注意:callback指定的url必须一致 //看看我们获得的access token Console.WriteLine(accessToken); //至此,我们已经获得了AccessToken
使用简化流程之后的ClientLogin方法
//初始化oAuth,准备认证 var oauth = new NetDimension.Weibo.OAuth("1028898141", "78be07c9bcfa30b7871788d3778ce131"); //简化的认证流程,直接调用ClientLogin。这个方法不需要去申请password方式的认证,只是模拟了上面的步骤并进行了封装 var result = oauth.ClientLogin("<你的微博账号>", "<你的微博地址>", "https://api.weibo.com/oauth2/default.html"); //返回值为bool型,为true则表示授权、登录成功。为false的话,要不密码错了,要不就是回调地址和新浪后台里面填写的不一样 Console.WriteLine(oauth.AccessToken); //看看这里获得的AccessToken,理论上应该是和上面那种方法获得的Token一样。
接口调用示例
在上面的步骤中获得AccessToken后,直接将OAuth对象作为参数来实例化一个操作类Client实例。之后的事情,你懂的^_^
//实例化一个操作类,用刚才成功获得了AccessToken的OAuth实例 NetDimension.Weibo.Client Sina = new NetDimension.Weibo.Client(oauth); //调用各种方法吧 Console.WriteLine(Sina.API.Statuses.FriendsTimeline());//获取最新微博 Console.WriteLine(Sina.API.Statuses.Update("发布一条微博来测试下火力!" + DateTime.Now.ToLongTimeString()));//发条微博测试下,不加后面的时间,会产生Exception,不能重复发微博 //来个取数据的例子 var mentions = Sina.API.Statuses.Mentions(); //通过“提到我的微博”接口来获得数据 //到 http://open.weibo.com/wiki/2/statuses/mentions 查一下mentions的数据结构,接下来咱们操作下数据。 foreach (var status in mentions.statuses) { if (status.IsDefined("user")) //这里要判断下是不是有user这个项,一般微博被删除了就不会返回user,直接xxx.user要出错。 { Console.WriteLine(string.Format("{0} 说:{1}", status.user.screen_name, status.text));//打印用户名和他说的内容 } }
类及方法简要说明
SDK中的相关方法及方法中的返回值与官方API一致,因此不对此部分内容进行列举。详细的返回内容请参考官方的API文档。
OAuth类,封装了授权、认证、登录等操作方法。
OAuth类 | |
OAuth | 构造函数 |
GetAuthorize | 获取应用授权地址,并设置返回方式 |
GetAccessTokenByAuthorizationCode | 通过code方式获取AccessToken |
GetAccessTokenByAuthorizationCode | 通过password方式获得AccessToken,需要官方申请权限。 |
GetAccessTokenByRefreshToken | 通过token方式获取AccessToken,也需要官方申请权限后才能获得RefreshToekn |
ClientLogin | 客户端登录,使用模拟code授权的方式完成授权和登录过程(俗称一键登录) |
VerifierAccessToken | 验证AccessToken的有效性 |
Client类,封装了官方API中微博各项操作方法。所有方法均按照分类封装在API命名空间中,方法按照官方的文档进行了分类。参数及返回值可参考官方文档,此处就不再一一列举。
Client类 | |
Client | 构造函数 |
API | 官方所有接口方法的封装。已经按照官方文档中的分类对各方法进行了封装,方法名称也基本和官方的API保持一致。返回值为JSON,使用DynamicJson进行了动态化,可直接使用xxx.xxx.xxx的形式获取内容,返回内容的数据结构请参考官方文档。 |
本人微博:http://weibo.com/xuanchenlin
项目托管地址:http://weibosdk.codeplex.com
欢迎关注,欢迎交流!