SDK V3 源码与示例

Rating:        Based on 1 rating
Reviewed:  1 review
Downloads: 2972
Released: Jun 15, 2015
Updated: Jun 17, 2015 by Xuanchenlin
Dev status: Stable Help Icon

Recommended Download

Application 源码和示例
application, 19514K, uploaded Jun 17, 2015 - 2972 downloads

Release Notes

2015年5月15更新
  • 这是一个新版本的SDK,与老版本不兼容
  • 这个版本至支持.net 4.0及更高框架
  • 这个版本没有将官方api封装成方法,具体使用方法请看示例

示例包含
  • Console示例
  • MVC 4示例
  • WinForm示例

特别提示
  • 本新版SDK基于Microsoft HTTP Client Libraries及JSON.net库,所以新项目请自行Nuget这两个库,否则无法正常运行。
  • 由于新浪的限制,新版本的SDK不在对模拟登录提供支持,Winform及Console请引用NetDimension.OpenAuth.Winform库,里面提供了一个授权窗口,具体请看代码示例

使用方法
未授权的情况
第一步:初始化客户端
var openAuth = new SinaWeiboClient("<appkey>", "<appsecret>", "<callback_url>");

第二步:获取授权
取得授权地址
var url = openAuth.GetAuthorizationUrl();

根据返回的CODE获取AccessToken
openAuth.GetAccessTokenByCode("<CODE>");
if(openAuth.IsAuthorized)
{
	var accessToken = openAuth.AccessToken;
	var uid = openAuth.UID;
}

另外,因为新浪官方的限制,新版的SDK不再提供老版的模拟登录(ClientLogin)方式,针对Winform和Console类型的项目,可以引用NetDimension.OpenAuth.Winform库,其中提供了一个扩展方法可在上述两种项目类型中弹出授权窗口,具体操作请查看Winform和Console示例代码。
var form = openAuth.GetAuthenticationForm();
if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
	Console.WriteLine("用户授权成功!");
	var accessToken = openAuth.AccessToken;
	var uid = openAuth.UID;

}
else
{
	Console.WriteLine("用户授权失败!");
}

第三步 调用api
api的调用提供了Get方法和Post方法,同时提供了对异步的支持。根据官方文档,请自行选择HttpGet方法或HttpPost方法来调用api(官方api文档已明确指出需要用何种方式来调用api)。
例如:获取当前登录用户的最新微博
var result = openAuth.HttpGet("statuses/friends_timeline.json", 
//这里可以使用字典或者匿名类的方式传递参数,参数名称和规范请参照官方api
new Dictionary<string, object>
{
	{"count", 5},
	{"page", 1},
	{"base_app" , 0}
});

if (result.IsSuccessStatusCode)
{
	Console.WriteLine(result.Content.ReadAsStringAsync().Result);
}

如果需要异步
// 调用获取获取用户信息api
// 参考:http://open.weibo.com/wiki/2/users/show
var response = openAuth.HttpGetAsync("users/show.json", 
//可以传入一个Dictionary<string,object>类型的对象,也可以直接传入一个匿名类。参数与官方api文档中的参数相对应
new {
	uid = openAuth.UID
});

response.ContinueWith(task =>{
	//异步处理结果
});


已授权的情况
第一步:初始化客户端
var openAuth = new SinaWeiboClient("<appkey>", "<appsecret>", "<access_token>", "<uid>");

第二步:调用api
api的调用提供了Get方法和Post方法,同时提供了对异步的支持。根据官方文档,请自行选择HttpGet方法或HttpPost方法来调用api(官方api文档已明确指出需要用何种方式来调用api)。
例如:获取当前登录用户的最新微博
var result = openAuth.HttpGet("statuses/friends_timeline.json", 
//这里可以使用字典或者匿名类的方式传递参数,参数名称和规范请参照官方api
new Dictionary<string, object>
{
	{"count", 5},
	{"page", 1},
	{"base_app" , 0}
});

if (result.IsSuccessStatusCode)
{
	Console.WriteLine(result.Content.ReadAsStringAsync().Result);
}

如果需要异步
// 调用获取获取用户信息api
// 参考:http://open.weibo.com/wiki/2/users/show
var response = openAuth.HttpGetAsync("users/show.json", 
//可以传入一个Dictionary<string,object>类型的对象,也可以直接传入一个匿名类。参数与官方api文档中的参数相对应
new {
	uid = openAuth.UID
});

response.ContinueWith(task =>{
	//异步处理结果
});

以上,大概就是新版本的核心内容。在源代码中,我还简单实现了一个腾讯开放平台的库,Console示例中有调用的例子,但是腾讯的要求很严,申请app需要网站验证,因为我用朋友的网站,所以请有需要的朋友还是自行注册app(腾讯微博的开发者平台dev.t.qq.com的api文档服务器是不是挂了?反正我是上不去了。)。

另外,腾讯的例子里有个发图片微博的方法,严格按照腾讯api文档来写的,但是不能正常使用,如果有朋友知道原因还请告知。

写腾讯的例子,只是为了展示新版的SDK通过继承,很容易就可以拓展到其他诸如微信开放平台、人人等平台。具体要怎么用,大家自行发掘。

如果有其他疑问,请在QQ群里提出,群号:241088256。

Reviews for this release

     
很不错,谢谢分享!
by varm on Jul 23, 2015 at 8:37 AM