1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 新浪微博登录接口实例

新浪微博登录接口实例

时间:2024-06-27 04:59:08

相关推荐

新浪微博登录接口实例

独角兽企业重金招聘Python工程师标准>>>

提交的方法:

public void getRequestToken()

{

OAuthBase oAuth = new OAuthBase();//需要引用DLL

string apiKey = "";//申请的App Key

string apiKeySecret = "";//申请的App Secret

string appReturnUrl = "";//返回的url

string requestTokenUri = "http://api./oauth/request_token";

string AUTHORIZE = "http://api./oauth/authorize";

string ACCESS_TOKEN = "http://api./oauth/access_token";

Uri uri = new Uri(requestTokenUri);

string nonce = oAuth.GenerateNonce();//获取随机生成的字符串,防止攻击

string timeStamp = oAuth.GenerateTimeStamp();//发起请求的时间戳

string normalizeUrl, normalizedRequestParameters;

// 签名

string sig = oAuth.GenerateSignature(uri, apiKey, apiKeySecret, string.Empty, string.Empty, "GET", timeStamp, nonce, string.Empty, out normalizeUrl, out normalizedRequestParameters);

sig = HttpUtility.UrlEncode(sig);

//构造请求Request Token的url

StringBuilder sb = new StringBuilder(uri.ToString());

sb.AppendFormat("?oauth_consumer_key={0}&", apiKey);

sb.AppendFormat("oauth_nonce={0}&", nonce);

sb.AppendFormat("oauth_signature={0}&", sig);

sb.AppendFormat("oauth_signature_method={0}&", "HMAC-SHA1");

sb.AppendFormat("oauth_timestamp={0}&", timeStamp);

sb.AppendFormat("oauth_version={0}", "1.0");

//请求Request Token

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sb.ToString());

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

StreamReader stream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);

string responseBody = stream.ReadToEnd();

stream.Close();

response.Close();

int intOTS = responseBody.IndexOf("oauth_token=");

int intOTSS = responseBody.IndexOf("&oauth_token_secret=");

Session["oauth_token"] = responseBody.Substring(intOTS + 12, intOTSS - (intOTS + 12));

Session["oauth_token_secret"] = responseBody.Substring((intOTSS + 20), responseBody.Length - (intOTSS + 20));

Response.Redirect(AUTHORIZE + "?oauth_token=" + Session["oauth_token"] + "&oauth_callback=" + appReturnUrl);

}

返回页面方法:

OAuthBase oAuth = new OAuthBase();

string apiKey = "";//申请的App Key

string apiKeySecret = "";//申请的App Secret

string requestTokenUri = "http://api./oauth/request_token";

string AUTHORIZE = "http://api./oauth/authorize";

string ACCESS_TOKEN = "http://api./oauth/access_token";

protected string imagesUrl = "/1134706865/50/0/1";

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

if (!string.IsNullOrEmpty(Request["oauth_verifier"]))

{

getAccessToken(Request["oauth_token"].ToString(), Request["oauth_verifier"].ToString());

}

}

}

public void getAccessToken(string requestToken, string oauth_verifier)

{

Uri uri = new Uri(ACCESS_TOKEN);

string nonce = oAuth.GenerateNonce();

string timeStamp = oAuth.GenerateTimeStamp();

string normalizeUrl, normalizedRequestParameters;

// 签名

string sig = oAuth.GenerateSignature(

uri,

apiKey,

apiKeySecret,

requestToken,

Session["oauth_token_secret"].ToString(),

"Get",

timeStamp,

nonce,

oauth_verifier,

out normalizeUrl,

out normalizedRequestParameters);

sig = oAuth.UrlEncode(sig);

//构造请求Access Token的url

StringBuilder sb = new StringBuilder(uri.ToString());

sb.AppendFormat("?oauth_consumer_key={0}&", apiKey);

sb.AppendFormat("oauth_nonce={0}&", nonce);

sb.AppendFormat("oauth_timestamp={0}&", timeStamp);

sb.AppendFormat("oauth_signature_method={0}&", "HMAC-SHA1");

sb.AppendFormat("oauth_version={0}&", "1.0");

sb.AppendFormat("oauth_signature={0}&", sig);

sb.AppendFormat("oauth_token={0}&", requestToken);

sb.AppendFormat("oauth_verifier={0}", oauth_verifier);

//请求Access Token

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sb.ToString());

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

StreamReader stream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);

string responseBody = stream.ReadToEnd();

stream.Close();

response.Close();

int intOTS = responseBody.IndexOf("oauth_token=");

int intOTSS = responseBody.IndexOf("&oauth_token_secret=");

int intUser = responseBody.IndexOf("&user_id=");

Session["oauth_token"] = responseBody.Substring(intOTS + 12, intOTSS - (intOTS + 12));

Session["oauth_token_secret"] = responseBody.Substring((intOTSS + 20), intUser - (intOTSS + 20));

Session["User_Id"] = responseBody.Substring((intUser + 9), responseBody.Length - (intUser + 9));

verify_credentials();

}

public void verify_credentials()

{

Uri uri = new Uri("http://api./account/verify_credentials.xml");

string nonce = oAuth.GenerateNonce();

string timeStamp = oAuth.GenerateTimeStamp();

string normalizeUrl, normalizedRequestParameters;

// 签名

string sig = oAuth.GenerateSignature(

uri,

apiKey,

apiKeySecret,

Session["oauth_token"].ToString(),

Session["oauth_token_secret"].ToString(),

"Get",

timeStamp,

nonce,

string.Empty,

out normalizeUrl,

out normalizedRequestParameters);

sig = HttpUtility.UrlEncode(sig);

StringBuilder sb = new StringBuilder(uri.ToString());

sb.AppendFormat("?oauth_consumer_key={0}&", apiKey);

sb.AppendFormat("oauth_nonce={0}&", nonce);

sb.AppendFormat("oauth_timestamp={0}&", timeStamp);

sb.AppendFormat("oauth_signature_method={0}&", "HMAC-SHA1");

sb.AppendFormat("oauth_version={0}&", "1.0");

sb.AppendFormat("oauth_signature={0}&", sig);

sb.AppendFormat("oauth_token={0}&", Session["oauth_token"].ToString());

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sb.ToString());

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

StreamReader stream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);

string responseBody = stream.ReadToEnd();

stream.Close();

response.Close();

ShowInfo(responseBody);

}

private void ShowInfo(string body)//显示信息

{

XmlDocument xml = new XmlDocument();

xml.LoadXml(body);

XmlNode XNSpec = xml.SelectSingleNode("user");

XmlNodeList XLlist = XNSpec.ChildNodes;

string name = "";

foreach (XmlNode xnnode in XLlist)

{

if (xnnode.Name == "id")

{

sinaId = xnnode.InnerText;

}

if (xnnode.Name == "name")

{

name = xnnode.InnerText;

}

if (xnnode.Name == "profile_image_url")

{

imagesUrl = xnnode.InnerText;

}

if (xnnode.Name == "gender")

{

switch (xnnode.InnerText)

{

case "m":

sex = "1";

break;

case "f":

sex = "2";

break;

}

}

}

hlblUserId.Value = sinaId;

lblUserNiName.Text = name;

hlblSex.Value = sex;

}

DLL下载地址:

新浪微博登录接口DLL.rar

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。