博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
新浪分享API应用的开发
阅读量:5046 次
发布时间:2019-06-12

本文共 3626 字,大约阅读时间需要 12 分钟。

入园一年多,第一次发文章,权当为自己记录...

 

Metro很多方法和以前不同,许多方法都要加上asyncawait,http连接也一样如此...

 

1 . Oauth2认证是必不可少的

详情就不细说,可以看新浪上给出的文档,很清晰了..

 client_idclient_secret同样自己在新浪申请,没什么可说的啦~

具体方法如下:   

///         /// OAuth2.0授权        ///        static  private async Task
OAuth(string username, string password) { bool islogin=false; dialog_url = "https://api.weibo.com/oauth2/access_token"; //发起POST连接 HttpClient client = new HttpClient(); //准备POST的数据 var postData = new List
>(); postData.Add(new KeyValuePair
("client_id", App_Key)); postData.Add(new KeyValuePair
("client_secret", App_Secret)); postData.Add(new KeyValuePair
("grant_type", "password")); postData.Add(new KeyValuePair
("username", username)); postData.Add(new KeyValuePair
("password", password)); HttpContent httpcontent = new FormUrlEncodedContent(postData); HttpResponseMessage response = await client.PostAsync(dialog_url, httpcontent); //返回的信息 string responseBody = await response.Content.ReadAsStringAsync(); //匹配返回信息 Match regex_back = regex.Match(responseBody); string value; while (regex_back.Success) { value = regex_back.Value.Substring(1, regex_back.Value.Length - 2); switch (value) { case "access_token": regex_back = regex_back.NextMatch(); _access_token = regex_back.Value.Substring(1, regex_back.Value.Length - 2); continue; case "uid": regex_back = regex_back.NextMatch(); uid = regex_back.Value.Substring(1, regex_back.Value.Length - 2); islogin=true; break; } regex_back = regex_back.NextMatch(); }      return islogin; }

这样得到了access_token...最好把它存在本地,这样下次就不用再登录了...

 

2.拿发布一条新微博来看

 请求参数

  必选 类型及范围 说明
source false string 采用OAuth授权方式不需要此参数,其他授权方式为必填参数,数值为应用的AppKey。
access_token false string 采用OAuth授权方式为必填参数,其他授权方式不需要此参数,OAuth授权后获得。
status true string 要发布的微博文本内容,必须做URLencode,内容不超过140个汉字。
lat false float 纬度,有效范围:-90.0到+90.0,+表示北纬,默认为0.0。
long false float 经度,有效范围:-180.0到+180.0,+表示东经,默认为0.0。
annotations false string 元数据,主要是为了方便第三方应用记录一些适合于自己使用的信息,每条微博可以包含一个或者多个元数据,必须以json字串的形式提交,字串长度不超过512个字符,具体内容可以自定。

可以看出必须的只有一个status,加上是OAuth认证,所以还有一个刚刚的access_token,方法如下:

///         /// 发表一条微博        ///         /// 微博内容        static public async Task
Update(string status) { dialog_url = "https://api.weibo.com/2/statuses/update.json"; HttpClient client = new HttpClient(); ////准备POST的数据 var postData = new List
>(); postData.Add(new KeyValuePair
("access_token", _access_token)); postData.Add(new KeyValuePair
("status", status)); HttpContent dataContent = new FormUrlEncodedContent(postData); //发起POST连接 HttpResponseMessage response = await client.PostAsync(dialog_url, dataContent); //返回的信息 responseBody = await response.Content.ReadAsStringAsync(); Match regex_back = regex.Match(responseBody); string value; while (regex_back.Success) { value = regex_back.Value.Substring(1, regex_back.Value.Length - 2); switch (value) { case "created_at": return true; } } return false; }

这样就OK了...返回true就发不成功了....

3.另外提一下,发图片时要用MultipartFormDataContent 发送多种类型的格式..StreamContent 则可以用来发送图片流..

 

转载于:https://www.cnblogs.com/stratrail/archive/2012/07/23/2579287.html

你可能感兴趣的文章
VMware 安装LINUX系统(一)
查看>>
filebeat 简介安装
查看>>
DIV+CSS兼容解决DIV最大宽度和最小宽度问题
查看>>
SpringMVC的执行流程
查看>>
二分匹配 二分+网络流 未完成
查看>>
MySQL存储过程详解 mysql 存储过程
查看>>
在64位IIS下,网站使用32位COM组件导致“800a01ad” ActiveX component can't create object错误的问题(转载)...
查看>>
ArcSDE常用命令之sdemon(转)
查看>>
Codeforces Round #397 题解
查看>>
3170: [Tjoi 2013]松鼠聚会
查看>>
java 13-1 数组高级二分查找
查看>>
Lucene:基于Java的全文检索引擎简介 (zhuan)
查看>>
Linq 高级查询
查看>>
PopupWindow
查看>>
Bi-shoe and Phi-shoe (欧拉函数)
查看>>
English trip V1 - B 19. Life of Confucius 孔子的生活 Teacher:Patrick Key:
查看>>
js 去掉空格
查看>>
bee api new
查看>>
【HTML5】可以省略标记的元素
查看>>
vue工程化之去除Eslint验证
查看>>