[转载]新浪微博SDK for .Net 4.0第二版正式发布了。

[转载]新浪微博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

欢迎关注,欢迎交流!

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏