SDK for .Net 正式版 Release 3

Rating:        Based on 1 rating
Reviewed:  0 reviews
Downloads: 16586
Change Set: 17908
Released: Jul 11, 2012
Updated: Jul 18, 2012 by Xuanchenlin
Dev status: Stable Help Icon

Recommended Download

Application .Net 2.0/3.5/4.0库文件
application, 1727K, uploaded Jul 18, 2012 - 2398 downloads

Other Available Downloads

Example 进阶示例 - 包括.net2.0和.net4.0的Winform及Web示例代码
example, 4786K, uploaded Jul 12, 2012 - 7033 downloads

Release Notes

2012年7月18日更新
  • 修正了ClientLogin中Callback为null时uri编码时抛异常的问题。
  • Client类中增加了异步调用的支持
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NetDimension.Weibo;

namespace WeiboSDKTestConsole
{
	class Program
	{
		static void Main(string[] args)
		{
			var oauth = new OAuth("<appkey>", "<appsecret>", "<回调地址>");
			oauth.ClientLogin("<微博帐号>", "<微博密码>");
			var Sina = new Client(oauth);

			Console.WriteLine("开始发送异步请求...");

			//例子1:异步获取用户的ID
			//demo的运行环境是.net 4.0,下面展示的这种方法在2.0及以上版本环境下有效,3.0以上可以用lambda表达式来简化delegate的蛋疼写法,请看下面的例子。
			Sina.AsyncInvoke<string>(
				//第一个代理中编写调用API接口的相关逻辑
			delegate()
			{
				Console.WriteLine("发送请求来获得用户ID...");
				System.Threading.Thread.Sleep(8000); //等待8秒
				return Sina.API.Entity.Account.GetUID();
			},
				//第二个代理为回调函数,异步完成后将自动调用这个函数来处理结果。
			delegate(AsyncCallback<string> callback)
			{
				if (callback.IsSuccess)
				{
					Console.WriteLine("获取用户ID成功,ID:{0}", callback.Data);
				}
				else
				{
					Console.WriteLine("获取用户ID失败,异常:{0}", callback.Error);
				}
			}
			 );

			//列子2:获取公共微博列表
			//2.0以上用lambda来写,方便不是一点点
			Sina.AsyncInvoke<NetDimension.Weibo.Entities.status.Collection>(() =>
			{
				//获取微博,接口调用,返回值是个NetDimension.Weibo.Entities.status.Collection,所以泛型T为NetDimension.Weibo.Entities.status.Collection
				Console.WriteLine("发送请求来获得公共微博列表...");
				return Sina.API.Entity.Statuses.PublicTimeline();
			}, (callback) =>
			{
				if (callback.IsSuccess)
				{
					//异步完成后处理结果,result就是返回的结果,类型就是泛型所指定的NetDimension.Weibo.Entities.status.Collection
					Console.WriteLine("获得公共微博列表成功,现在公共频道发微博的人都是他们:");
					foreach (var status in callback.Data.Statuses)
					{
						if (status.User != null)
							Console.Write(status.User.ScreenName + " ");//打印公共微博发起人的姓名
					}
					Console.WriteLine();
				}
				else
				{
					Console.WriteLine("获取用户ID失败,异常:{0}", callback.Error);
				}

			});


			Console.WriteLine("已发送所有异步请求。等待异步执行完成...");

			Console.ReadKey(); //阻塞,等待异步调用执行完成

		}

	}
}

2012年7月17日更新
  • 修正了OAuth類中GetAccessTokenBySignedRequest拋"SignedRequest签名验证失败。"錯誤的問題,簽名算法寫錯了,特此更正。

2012年7月13日更新
  • 现在SDK支持站内应用的开发了。OAuth类中添加了GetAccessTokenBySignedRequest方法,参数为站内应用官方post过来的SignedRequest。
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections.Specialized;
using NetDimension.Weibo;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
		var sign = Request["signed_request"];

		if (string.IsNullOrEmpty(sign))
		{
			throw new Exception("请从站内应用地址访问本页面。");
			//不要问我什么是站内应用地址,你既然开发站内应用,站内应用地址和应用实际地址都搞不清的,建议还是先去看官方的文档吧,不解释。
		}

		OAuth oauth = new OAuth("<AppKey>", "<AppSecret>", "<回调地址>");

		var token = oauth.GetAccessTokenBySignedRequest(sign); //用主框架POST过来的SignedRequest来获取AccessToken

		if (oauth.VerifierAccessToken() == TokenResult.Success)
		{
			var client = new Client(oauth);

			var userinfo =  client.API.Dynamic.Users.Show(uid: client.API.Entity.Account.GetUID());

			Response.Write(userinfo.ToString());
		}
		else
		{
			throw new Exception("悲了个剧的,授权失败了。原因自己找吧,我是试过可以的,纠结回调地址没意义,看教程吧^_^");
		}
    }
}

2012年7月12日更新
  • 针对Release3修改了下Demo代码,现在上传到这里了。

SDK for .Net 正式版 Release 3 发布说明
2012年7月11日更新
  • 删除了WeiboStringParameter和WeiboBinaryParameter类,所有参数数据类型都整合进了WeiboParameter类中。WeiboParameter类添加了IsBinaryData属性来判断是否含有图片、文件等二进制数据。
  • OAuth类中的Request方法删除了multi参数,现在靠程序来判断是否用multipart来传输数据。因此,Client类中的Http方法和PostCommand方法也舍弃了multi参数,同时也删除了带有multi参数的重载方法。
  • 项目的引用中摒弃了System.Web命名空间。当初引用该命名空间是为了使用其中的HttpUtility.UrlEncode方法,现在换成Uri.EscapeDataString方法来对字符串进行编码。也因此,可以支持Client Profile类型的框架了,方便了Winform的开发。
  • 更新了Utility类中GetBoundary的算法,该算法生成的Boundary不用再进行UrlEncode编码。
  • 更新了Utility类中BuildPostData的算法,现在采用MemoryStream来生成byte[],这种方式不用考虑编码问题,不会出现蛋疼的空格变加号问题。
  • 由于新浪的错误编码有误,OAuth类中的VerifierAccessToken无法正确返回异常说明,所以现在不再抛出异常,其他错误用TokenResult.Other结果来代替。

Reviews for this release