最近遇到一个项目,其中需要将用户的微博信息与自己的网站项目上同步,好在新浪微博是提供了API的,大概查阅了一下,信息同步需要调用的是https://api.weibo.com/2/statuses/user_timeline.json,需要验证用户登录,返回的是JSON格式的数据。
在关于授权机制说明中,新浪微博的API一共有两种验证机制,分别是:OAuth和Basic Auth,OAuth没有细看,不去管他,在Basic Auth授权介绍部分提到了cnblogs上的一篇文章, http://www.cnblogs.com/QLeelulu/archive/2009/11/22/1607898.html,这篇文章给出了在asp.net中如何去以GET方式提交一个http请求,并给出返回内容的代码,顺着这篇文章又找到了另一篇博客园团队的文章:http://www.cnblogs.com/cmt/archive/2010/05/13/1733904.html,这篇文章实现了站外发送微博的功能。结合这两篇文章,实现了新浪微博同步的功能。
下面介绍实现微博同步的步骤:
1.首先为了实现http请求,需要引入using System.Net;命名空间,同时后面在转换字符集部分及取得返回内容部分,需要另外两个命名空间:using System.Text;和using System.IO;
接下来就可以开始编写代码实现取得json数据了。
(1)准备用户验证数据
string usernamePassword = username + ":" + password;
username是你的微博登录用户名,password是你的博客密码。
(2)准备API的URL,URL中的参数直接以GET方式附在URL中,刚开始博客园的文章没有细看,直接贴过来代码,把参数附加在data中,总是返回400错误,后来查了一下msdn,发现HttpWebRequest的默认请求方式就是GET,再者既然是GET方式,应该就是以URL来传递参数的。
string url = "https://api.weibo.com/2/statuses/user_timeline.json?source="+apikey+"&count="+count+"";
上面的apikey是做为新浪微博用户的开发者申请的,应该是唯一的,博客园的文章中说需要发一封邮件审核,我没有发邮件,直接申请,也得到了一个APIKEY,信息也可以同步,只不过当在站外发送微博信息时,在来源部分会是:未审核应用。后面还有uid和screen_name 等参数,具体的参数API文档都有说明。
(3)组织代码实现HttpWebRequest请求
WebRequest webRequest = System.Net.WebRequest.Create(url);HttpWebRequest myReq = webRequest as System.Net.HttpWebRequest;CredentialCache mycache = new CredentialCache();mycache.Add(new Uri(url), "Basic", new NetworkCredential(username, password));myReq.Credentials = mycache; //验证用户授权机制myReq.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(usernamePassword)));
(4)取得返回内容,其中用到了Stream类。
WebResponse wr = myReq.GetResponse();Stream receiveStream = wr.GetResponseStream();StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);string content = reader.ReadToEnd();
上面的content即为取得的微博信息的json格式的内容,到此为止,已经实现了如何获得微博内容的功能。接下来的部分就是如何格式化json内容,以相应的形式显示在网页中。
2.在asp.net中格式化json数据。
取得json数据后,到网上搜了一下,大多都是介绍如何在javascript中去以键值形式读取的,本人对javascript比较畏惧。其中有两篇文章是以类的形式实现了如何在asp.net中读取json数据,没有去实践。后来在一篇文章中发现Jayrock.Json,使用起来比较简单,同时有一篇word的使用说明文档。下面的代码实现是基于Jayrock.Json实现的。Jayrock.Json中基本是以JsonArray和JsonObject的转换来实现以键值方式读取json数据,我是将取得的数据放入DataTable中,后来想想这样也有好处,前台的UI可以随意设计,最终绑定到DataTabel即可。
下面是格式化Json数据并实现DataTable的代码。
JsonReader jsonRead = new JsonTextReader(new StringReader(content)); JsonObject jsonobj = new JsonObject(); jsonobj.Import(jsonRead); JsonArray wiboArr = jsonobj["statuses"] as JsonArray; DataTable wibo = new DataTable(); wibo.Columns.Add("id", typeof(Int64)); wibo.Columns.Add("screen_name", typeof(string)); wibo.Columns.Add("profile_image_url", typeof(string)); wibo.Columns.Add("text", typeof(string)); wibo.Columns.Add("source", typeof(string)); wibo.Columns.Add("created_at", typeof(DateTime)); foreach (JsonObject wibolist in wiboArr) { DataRow dr = wibo.NewRow(); dr["id"] = Convert.ToInt64(wibolist["id"]); JsonObject user = wibolist["user"] as JsonObject; dr["screen_name"] = user["screen_name"].ToString(); dr["profile_image_url"] = user["profile_image_url"].ToString(); dr["text"] = wibolist["text"].ToString(); dr["source"] = wibolist["source"].ToString(); dr["created_at"] = DateTime.ParseExact(wibolist["created_at"].ToString(), "ddd MMM dd HH:mm:ss K yyyy", new System.Globalization.CultureInfo("en-GB")); wibo.Rows.Add(dr); }
通过上面的两大步骤,实现了取得微博信息,并将其放入DataTable中的功能。
后记:新浪微博的创建时间格式是:Tue May 31 17:46:55 +0800 2011,网上也没找到相关资料,开始的时候是自己专门编写了两个函数用来解析这个时间字符串,后来csdn上的一个朋友dalmeeme以一行代码的形式(DateTime自带的一个方法)就实现了,在此一并感谢!
分享到:
相关推荐
这个基于ThinkPHP框架的腾讯微博和新浪微博同步登录代码,就是实现这一功能的一个实例。ThinkPHP是中国流行的PHP开发框架,它以其简洁的语法、强大的功能和高效的性能深受开发者喜爱。以下将详细解释这个项目中的...
新浪微博的SSO实现展示了这种技术如何在多域名环境下提供无缝的用户体验。 在新浪微博的场景中,用户可以在`t.sina.com.cn`登录后,无须再次登录就能在`weibo.com`上继续浏览和操作。这是通过SSO系统实现的,这个...
综上所述,“新浪微博登录网站”技术涉及了用户身份验证、数据同步、API调用、安全策略和用户体验等多个方面,是现代Web开发中不可或缺的一部分。开发者需要熟悉OAuth 2.0协议,理解微博开放平台的规则,并结合网站...
通过UCHOME 2.0整合新浪微博插件,用户可以直接在社区内分享内容到自己的微博账号,同时,也可以将微博上的动态同步到社区,增加社区的活跃度和曝光率。安装插件后,用户只需在个人设置中绑定微博账号,即可实现无缝...
这款插件的核心在于实现UCHOME与新浪微博、QQ空间和人人网等主流社交平台的无缝对接。它允许用户通过自己的UCHOME账号直接登录这些社交网站,无需重复注册,提高了用户的使用便利性。同时,用户在UCHOME上的活动,如...
新浪微博客户端作为一个典型的社交应用,其源码中包含了登录注册、消息推送、用户信息展示、动态发布、评论互动等一系列功能的实现。这些功能的实现涉及到Android SDK中的诸多API,例如网络请求(可能使用了OkHttp或...
数据本地备份、设置网站粉丝/关注关系从零开始或继续用新浪微博的关注关系、多个互动模块(包括活动、现场直播、现场访谈)、信息审核后台、自定义短链接、个性域名、自由选择模板、自定义皮肤、站外调用功能(微博...
5、用户绑定新浪微博后,可将本站微博同步发到新浪微博,实现推广; 6、支持用户编辑微博内容,限定一定时间并且无评论和回复的情况下; 7、新增积分奖励,管理员后台可设置奖励项目、周期,有效激励用户; 8、可...
5、用户绑定新浪微博后,可将本站微博同步发到新浪微博,实现推广; 6、支持用户编辑微博内容,限定一定时间并且无评论和回复的情况下; 7、新增积分奖励,管理员后台可设置奖励项目、周期,有效激励用户; 8、可...
数据本地备份、设置网站粉丝/关注关系从零开始或继续用新浪微博的关注关系、多个互动模块(包括活动、现场直播、现场访谈)、信息审核后台、自定义短链接、个性域名、自由选择模板、自定义皮肤、站外调用功能(微博...
在实际应用中,ASP源码的微博同步模板可能会使用API接口与微博平台进行交互,例如通过OAuth进行用户授权,获取并发布微博,同时可能支持不同社交平台的API,如新浪、腾讯微博等。开发者可能需要熟悉各平台的API文档...
记事狗微博系统是一套业界领先的开源PHP微博程序,其支持Web、手机、短信、QQ机器人等多种方式发布内容,并可通过QQ即时通知、站外调用、同步到新浪微博、腾讯微博(可使用微博账户登录、注册绑定)等传播内容,是...
1) 发布微博时可以同步到新浪微博,方便两个微博的维护(需要绑定新浪微博账号); 2) 可以对关注的用户进行分组,并且可以根据分组查看进入自己时间线的微博; 3) 可以创建特色话题,通过图片、文字加强话题的...
总结来说,PPS微博发布的工具是一个全面而实用的分享平台,它提供了一站式的截图、图片处理和社交媒体同步功能,让用户在观看影片的同时,能够轻松、快捷地与朋友们分享精彩时刻。无论是截取视频画面,还是同步到多...
- **身份认证**、**用户关系**和**内容传播**:支持用户通过微博账号登录第三方网站,同步信息,实现一站式服务。 2. **腾讯微博开放平台** 腾讯微博也提供了多种API工具,以增强网站与微博的互动: - **一键...
1) 发布微博时可以同步到新浪微博,方便两个微博的维护(需要绑定新浪微博账号); 2) 可以对关注的用户进行分组,并且可以根据分组查看进入自己时间线的微博; 3) 可以创建特色话题,通过图片、文字加强话题的...
v3.2的微博主要增加了以下功能: 1) 发布微博时可以同步到新浪微博,方便两个微博的维护(需要绑定新浪微博账号); 2) 可以对关注的用户进行分组,并且可以根据分组查看进入自己时间线的微博; 3) 可以创建特色话题...
通过手机号、新浪微博、腾讯QQ登录“AA拼车”,安全、方便; 我们推荐使用“免费语音通话”预约拼车,为您节省话费。 喜玛拉雅科技致力于提供汽车共享服务,有效改善交通拥堵,并提高空座位使用率,提倡低碳、环保...
ICMS建站系统是一款轻便灵活、简单...7.社区化营销、全网推广网站:用户同步QQ、新浪微博;发布信息自动分享到QQ空间、新浪微博等SNS社区。 8.在线订购系统:发布产品后客户可以在线购买、支付、后台可以轻松管理。
3、支持发帖同步到新浪微博,支持QQ、微博头像同步到云边。 4、支持关注、喜欢(收藏)、评论等交互性的操作。 5、发布音乐类型可以使用外部地址的方式,比虾米、优酷,等网站。 6、发布图片类型使用flash上传组件,...