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); }
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; }
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); }
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("发布成功!"); } }
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("获取成功!"); } }
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)); } }
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("发布成功!"); } }