Inheritance: OpenAuthenticationClientBase
		public ActionResult GetAuthorizationState()
		{
			var settings = ConfigurationManager.AppSettings;

			var oauth = new SinaWeiboClient(settings["appKey"], settings["appSecret"], settings["callbackUrl"]);


			if (Request.Cookies["access_token"] == null || string.IsNullOrEmpty(Request.Cookies["access_token"].Value))
			{
				return Json(new
				{
					authorized = false
				}, JsonRequestBehavior.AllowGet);
			}



			var accessToken = Request.Cookies["access_token"].Value;
			var uid = Request.Cookies["uid"].Value;

			oauth.AccessToken = accessToken;
			oauth.UID = uid;

			//较v2版的sdk,新的v3版sdk移除了所有的本地化api接口,因为新浪的接口变来变去,踩着滑板鞋也追不着他们魔鬼的步伐。
			//因此v3版的调用方式改为直接填写官方api名称和传递官方文档中要求的参数的方式来调用,返回结果需要自行使用json接卸器解析。
			var response = oauth.HttpGet("user/show.json", new
			{
				uid = uid
			});


			return Json(response.Content.ReadAsStringAsync().Result, JsonRequestBehavior.AllowGet);

		}
Beispiel #2
0
		public SinaWeiboTest()
		{
			console.info("等待用户授权...");



			var openAuth = new SinaWeiboClient("1402038860", "62e1ddd4f6bc33077c796d5129047ca2", "http://qcyn.sina.com.cn");

			var form = openAuth.GetAuthenticationForm();



			



			if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK)
			{
				console.info("用户授权成功!");
				console.data("AccessToken={0}", openAuth.AccessToken);


				StartTest(openAuth);

			}
			else
			{
				console.error("用户授权失败!");
			}
		}
		/// <summary>
		/// 封装一个方法来初始化OpenAuth客户端
		/// </summary>
		/// <returns></returns>
		private SinaWeiboClient GetOpenAuthClient()
		{
			var accessToken = Session["access_token"] == null ? string.Empty : (string)Session["access_token"];
			var uid = Request.Cookies["uid"] == null ? string.Empty : Request.Cookies["uid"].Value;

			var settings = ConfigurationManager.AppSettings;
			var client = new SinaWeiboClient(settings["appKey"], settings["appSecret"], settings["callbackUrl"], accessToken, uid);

			return client;
		}
Beispiel #4
0
		private void StartTest(SinaWeiboClient openAuth)
		{
			console.attention("按任意键发布一条文字微博");
			Console.ReadKey(true);
			PostStatus(openAuth);

			console.attention("按任意键发布一条图片微博");
			Console.ReadKey(true);
			PostImageStatus(openAuth);

			console.attention("按任意键获取最新微博");
			Console.ReadKey(true);
			GetFrindTimeline(openAuth);
		}
Beispiel #5
0
		private void PostImageStatus(SinaWeiboClient openAuth)
		{
			console.info("发布一条图片微博...");

			var imgPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"MrJSON-Production.png");
			var result = openAuth.HttpPost("statuses/upload.json", new Dictionary<string, object> {

				{"status" , string.Format("发布自SinaWeiboSDK_V3@{0:HH:mm:ss}", DateTime.Now)},
				{"pic" , new FileInfo(imgPath)}
			});

			console.attention("{0}", result);


			if (result.IsSuccessStatusCode)
			{

				console.data(result.Content.ReadAsStringAsync().Result);
				console.info("发布成功!");
			}
		}
Beispiel #6
0
		private void GetFrindTimeline(SinaWeiboClient openAuth)
		{
			console.info("获取当前登录用户及其所关注用户的最新微博...");


			var result = openAuth.HttpGet("statuses/friends_timeline.json", new Dictionary<string, object>
			{
				{"count", 5},
				{"page", 1},
				{"base_app" , 0}
			});
			console.attention("{0}", result);

			if (result.IsSuccessStatusCode)
			{

				console.data(result.Content.ReadAsStringAsync().Result);
				console.info("获取成功!");
			}

		}
Beispiel #7
0
		static void Main()
		{
			Application.EnableVisualStyles();
			Application.SetCompatibleTextRenderingDefault(false);


			//请自行修改appKey,appSecret和回调地址。winform的回调地址可以是一个随便可以访问的地址,貌似不可以访问的地址也是可以的,只要URL中带着Code就行
			var client = new SinaWeiboClient("1402038860", "62e1ddd4f6bc33077c796d5129047ca2", "http://qcyn.sina.com.cn");

			//NetDimension.OpenAuth.Winform封装的一个登录窗口,主要远离就是个WebBrowser控件,然后在该控件的导航事件里面监测Url是不是带有Code,如果有就调用GetAccessTokenByCode
			var authForm = client.GetAuthenticationForm();

			authForm.StartPosition = FormStartPosition.CenterScreen;
			authForm.Icon = Properties.Resources.icon_form;

			if (authForm.ShowDialog() == DialogResult.OK)
			{
				Application.Run(new Form1(client));
			}


		}
Beispiel #8
0
		private void PostStatus(SinaWeiboClient openAuth)
		{
			console.info("发布一条微博...");


			var result = openAuth.HttpPost("statuses/update.json", new Dictionary<string, object>
			{
				{"status" , string.Format("发布自SinaWeiboSDK_V3@{0:HH:mm:ss}", DateTime.Now)}
			});

			console.attention("{0}", result);
			if (result.IsSuccessStatusCode)
			{

				console.data(result.Content.ReadAsStringAsync().Result);
				console.info("发布成功!");
			}
		}