新浪接口
不得不说,新浪接口是在不断补充和改进中前行的。我个人在写下面的东西要告诉大家的事情是
1代新浪接口与2代新浪接口的验证信息以及方法都是不共用的,即,2代验证后的access不能用在1代接口的参数中,用也是错的。
其次,2代接口要求的几样东西需要大家清楚:1)应用app_key,app_secret;2)在新浪应用--高级信息中填写回调地址callback_url,这个都是必须的,因为会验证,如果你在调用的过程当中没写清楚,回来的必然是接口mismatch错误。
1、 json反序列化
新浪接口返回来的是json格式的信息,需要我们反序列化,我个人是将返回的参数放到对象中调用,下面是一个例子。
2012-3-9补充:加入了JSON反序列化成某对象的集合的方法。.NET2.0需要另外下载调用Newtonsoft.Json.dll;
对象:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Runtime.Serialization;
/// <summary>
/// AccessToken 的摘要说明
/// </summary>
///
[DataContract]
public class AccessTokenObject
{
/// Represents the user ids.
/// </summary>
///http://www.baigelong.com/#access_token=2.00HhJd1CkaGmpB907f44bb37wf9zyC&expires_in=86400&remind_in=72302&uid=2137124445
private string _access_token= "";
private string _expires_in = "";
private string _remind_in="";
private string _uid="";
public AccessTokenObject()
{
// TODO: 在此处添加构造函数逻辑
//
}
/// <remarks/>
[DataMember(Name = "access_token")]
public string access_token
{
get { return _access_token; }
set { _access_token = value; }
}
[DataMember]
public string expires_in
{
get { return _expires_in; }
set { _expires_in = value; }
}
[DataMember]
public string remind_in
{
get { return _remind_in; }
set { _remind_in = value; }
}
/// <remarks/>
///
[DataMember(Name = "uid")]
public string uid
{
get { return _uid; }
set { _uid = value; }
}
}
方法:
//反序列化成一个对象
public static T JsonToObject<T>(string jsonStr) where T : class
{
T result = null;
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonStr)))
{
result = ser.ReadObject(ms) as T;
}
return result;
}
//反序列化成某一个对象的集合
public static Collection<T> JSONStringToList<T>(string JsonStr) where T : class
{
Collection<T> Data = JavaScriptConvert.DeserializeObject<Collection<T>>(JsonStr);
return Data;
}
使用:
private string ACCESS_TOKEN = "https://api.weibo.com/oauth2/access_token";
ACCESS_TOKEN += "?client_id="+ this.appKey+"&client_secret="+this.appSecret+"&grant_type=authorization_code&redirect_uri=http://www.baigelong.com&code="+this.code;
//发送请求
string response = oAuthWebRequest(Method.POST, ACCESS_TOKEN, string.Empty);
//新建对象
AccessTokenObject accesstokenobject = new AccessTokenObject();
//返回信息
if (response.Length > 0)
{
accesstokenobject = JsonSerializationHelper.JsonToObject<AccessTokenObject>(response);
}
return accesstokenobject;
jquery类
1、做折叠层
代码比较简单,自己推敲。里面都是jquery的基本特效,没太复杂的东西。
fadeIn,fadeOut方法可选
fadeIn("slow or fast",callback function);
fadeIn("slow or fast");
1)网页代码
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td class="td_clumn">说明</td>
</tr>
<tr>
<td class="td_row"><a href="#" id="qst1" class="qst" onclick="read();">什么是微博影响力?</a></td>
</tr>
<tr>
<td class="td_row">
<div id="as1" visible="false" class="as">
<p>曾经有一份真诚的爱情摆在我的面前<br>但是我没有珍惜<br>等到了失去的时候才后悔莫及<br>尘世间最痛苦的事莫过于此<br>如果上天可以给我一个机会再来一次的话<Br>我会跟那个女孩子说'我爱你'<br>如果非要把这份爱加上一个期限<br>我希望是一万年!</p>
</div>
</td>
</tr>
</tr>
</table>
2)JS方法
function read(){
var id = window.event.srcElement.id;
id = "#as"+id.charAt(id.length-1);
if($(id).attr("visible")=="false"){
$(id).fadeIn("slow",function(){$(id).attr("visible",true)});
}else{
$(id).fadeOut("slow",function(){$(id).attr("visible","false")});
}
}