使用新浪微博开放平台api同步微博内容至自己网站(WeiboSDK新浪微博SDKv3源码和示例(图))

优采云 发布时间: 2021-10-18 00:17

  使用新浪微博开放平台api同步微博内容至自己网站(WeiboSDK新浪微博SDKv3源码和示例(图))

  WeiboSDK 新浪微博SDK v3 源代码和示例前言

  时间过得真快,距离上次SDK更新已经3年多了。随着正式版的不断更新,老SDK的部分接口已经不能正常使用了。于是,QQ群里抱怨辱骂的朋友开始增多。随着时代的发展,微博已经被微信彻底甩掉,失去了兴趣;同时,对于我自己来说,在这个行业里为了生存而生存几年后,日子越来越不好过,我没有时间。然后和新浪官方同步更新SDK,所以自13年之后,V2版本的SDK就没有再更新了。虽然微博的风潮没了,但还是有很多朋友通过新浪开放平台页面下载了我发布的SDK。可以说,由于长期不更新,老版本严重误导了新朋友。这也是我开发的。SDK 新版本的另一个重要原因。SDK第三版的一些说明

  指示

  第一步是初始化客户端

  如果用户没有被授权

  使用微博开放平台后台提供的a*敏*感*词*ey、appsecret、callback_url初始化客户端。

  ", "", "");">

  var openAuth = new SinaWeiboClient("", "", "");

  然后获取授权页面地址,访问授权地址,获取Authorization_Code

  var url = openAuth.GetAuthorizationUrl();

  根据返回的Code兑换AccessToken

  openAuth.GetAccessTokenByCode("[CODE]");

if(openAuth.IsAuthorized)

{

var accessToken = openAuth.AccessToken;

var uid = openAuth.UID;

}

  重要的!!!获取到AccessToken和UID后,请保存这两个数据,以后的接口调用会直接使用这两个参数,所以不需要每次都执行第一步和第二步。

  接下来就可以跳转到第二步调用官方API了。

  当然,如果你之前已经被授权并且已经获得了AccessToken和UID,那么使用下面的方法来初始化客户端。

  ", "", "", "");">

  var openAuth = new SinaWeiboClient("", "", "", "");

  之后就可以直接跳转到第二步调用API了。

  第二步调用接口

  这里提供了Get和Post两个方法调用官方API,也提供了异步支持。使用时根据官方文档的要求选择是使用Get还是Post调用API(调用方法在官方文档中有明确说明)。

  调用接口传递参数有两种方式。一个是传入一个Dictionary类型的参数组,一个是传入一个名为new的匿名类。我个人认为使用匿名类是非常科学的。

  例如调用API获取当前登录用户的最新微博

  {{"count", 5},{"page", 1},{"base_app", 0}}); //这里可以使用字典或者匿名类来传递参数,参数名,大小写,参数顺序和规范请参考官方api文档 if (result.IsSuccessStatusCode){Console.WriteLine(result.Content.ReadAsStringAsync( ).结果);}">

  var result = openAuth.HttpGet("statuses/friends_timeline.json",

new Dictionary

{

{"count", 5},

{"page", 1},

{"base_app" , 0}

}); //这里可以使用字典或者匿名类的方式传递参数,参数名称、大小写、参数顺序和规范请参照官方api文档

if (result.IsSuccessStatusCode)

{

Console.WriteLine(result.Content.ReadAsStringAsync().Result);

}

  另外,如果需要异步调用,请参考下面的例子。

  对象的类型也可以直接传入匿名类。参数对应官方api文档中的参数 new {uid = openAuth.UID});response.ContinueWith(task =>{//asynchronous processing result});">

  // 调用获取获取用户信息api

// 参考:http://open.weibo.com/wiki/2/users/show

var response = openAuth.HttpGetAsync("users/show.json",

//可以传入一个Dictionary类型的对象,也可以直接传入一个匿名类。参数与官方api文档中的参数相对应

new {

uid = openAuth.UID

});

response.ContinueWith(task =>{

//异步处理结果

});

  如果使用.net4.5,可以直接使用async和await关键字来简化上述操作。

  另外,由于新浪官方限制现在产生了登录验证码,新版SDK不再提供之前版本的模拟登录获取授权(ClientLogin)。对于Winform和Console应用,可以参考NetDimension.OpenAuth.Winform类,该类提供了扩展方法,可以在上述两种项目类型中弹出授权窗口,并在用户授权后自动获取Authorization_Code。具体操作请参见Winform和Console示例代码。

  using NetDimension.OpenAuth.Winform;

...

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("用户授权失败!");

}

  执行上述代码时,会弹出下图所示的窗口。

  用户登录后,SDK 会使用正则表达式从回调地址中获取 Authorization_Code。

  关于源代码中的例子

  例子没什么好说的。源代码中有三个示例。它们是一个 MVC 网页示例、两个桌面控制台和 WinForm 示例。

  示例中,明文写了一组A*敏*感*词*ey以及对应的Secret和回调地址。如果你不改变它,这个例子应该可以正常工作。如果改成自己的Key出现错误,请自行谷歌设置回调地址。

  MVC 的示例设置稍微复杂一些。需要修改IIS Express的配置,使得网站可以通过127.0.0.1或192.16 8.0.100这样的IP地址是可以访问的,否则在回调过程中无法访问。MVC示例的主页上有修改教程。如果示例不起作用,请打开 Views\Home\Index.cshtml 查看是否已修改。

  Winform 示例运行截图

  

  

  网站示例运行截图

  

  还有一点需要注意的是,如果你使用的是VS2015,IIS Express配置文件applicationhost.config的地址不再是“Documents\IIS Express\”,而是在项目地址下的.vs目录下,这是一个隐藏目录, 直接在地址栏中输入路径即可访问。

  控制台示例运行的屏幕截图

  

  有调用腾讯微博的例子,但是腾讯的要求很严格。申请app需要网站验证,因为我用的是朋友的网站,所以请有需要的朋友或者自己注册app(腾讯微博开发者平台的api文档服务器是不是挂了?反正,我提不起来。)另外,在腾讯的例子中,有一种在微博上发图片的方法,严格按照腾讯api文档写的,但是不能正常使用。如果有朋友知道原因,请告诉我们。腾讯的例子只是为了说明新版SDK可以通过继承方便的扩展到微信开放平台、人人网等其他平台。请了解如何使用它。

  示例代码已收录在源代码中,具体请自行查阅代码。

  以上是新版本的全部内容。

  正如开头所说,新浪微博觉得大势已去,所以本次微博SDK不会更新新版本。本SDK第三版为最终版本,仅用于维护和BUG修正,不再添加或更新新内容。如果有继续对新浪开发平台感兴趣的朋友,请到GitHub上克隆代码,根据需要扩展功能。

  最后感谢QQ群里的所有朋友这几年的支持和鼓励,谢谢。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线