三部曲1. default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Newtonsoft.Json.Linq;
namespace AppDemo
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
switch (Request["s"])
{
case "kaixin":
GetUserKaixin();
break;
case "qq":
GetUserQQ();
break;
case "sina":
GetUserSina();
break;
}
}
protected void btnKaixin_Click(object sender, EventArgs e)
{
Response.Redirect("Login.aspx?t=kaixin");
}
protected void btnQQ_Click(object sender, EventArgs e)
{
Response.Redirect("Login.aspx?t=qq");
}
protected void btnLoginSina_Click(object sender, EventArgs e)
{
Response.Redirect("Login.aspx?t=sina");
}
protected void btnRenren_Click(object sender, EventArgs e)
{
Response.Redirect("Login.aspx?t=renren");
}
protected void GetUserKaixin()
{
HttpData http = new HttpData();
string access_token = Session["access_token"].ToString();
string url = string.Format("https://api.kaixin001.com/users/me.json?access_token={0}", access_token);
string responseData = http.WebRequest("get", url, string.Empty);
Response.Write("Kaixin");
Response.Write(responseData);
}
protected void GetUserQQ()
{
HttpData http = new HttpData();
string access_token = Session["access_token"].ToString();
string uid = Session["uid"].ToString();
string oauth_consumer_key = System.Configuration.ConfigurationManager.AppSettings["app_secret_qq"];
string app_openid_qq = System.Configuration.ConfigurationManager.AppSettings["app_openid_qq"];
string url = string.Format(" https://graph.qq.com/user/get_user_info?access_token={0}&oauth_consumer_key={1}&openid={2}&format=json ",
access_token, oauth_consumer_key, app_openid_qq);
string responseData = http.WebRequest("get", url, string.Empty);
Response.Write("QQ");
Response.Write(responseData);
}
protected void GetUserSina()
{
HttpData http = new HttpData();
string access_token = Session["access_token"].ToString();
string uid = Session["uid"].ToString();
string url = string.Format("https://api.weibo.com/2/users/show.json?access_token={0}&uid={1}",
access_token,uid);
string responseData = http.WebRequest("get", url, string.Empty);
Response.Write("Sina");
Response.Write(responseData);
}
}
}
// HttpData.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net;
using System.IO;
namespace AppDemo
{
public class HttpData
{
public string WebRequest(string method, string url, string postData)
{
HttpWebRequest webRequest = null;
StreamWriter requestWriter = null;
string responseData = "";
webRequest = System.Net.WebRequest.Create(url) as HttpWebRequest;
webRequest.KeepAlive = false;
webRequest.Method = method.ToString();
webRequest.ServicePoint.Expect100Continue = false;
if (method == "post")
{
webRequest.ContentType = "application/x-www-form-urlencoded";
requestWriter = new StreamWriter(webRequest.GetRequestStream());
try
{
requestWriter.Write(postData);
}
catch
{
throw;
}
finally
{
requestWriter.Close();
requestWriter = null;
}
}
responseData = _WebResponseGet(webRequest);
webRequest = null;
return responseData;
}
public string _WebResponseGet(HttpWebRequest webRequest)
{
StreamReader responseReader = null;
string responseData = "";
try
{
var response = webRequest.GetResponse();
responseReader = new StreamReader(response.GetResponseStream());
responseData = responseReader.ReadToEnd();
}
catch (WebException e)
{
WebResponse error = e.Response;
if (error != null)
{
responseReader = new StreamReader(error.GetResponseStream());
responseData = responseReader.ReadToEnd();
}
}
finally
{
if (responseReader != null)
{
responseReader.Close();
}
responseReader = null;
}
return responseData;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace AppDemo
{
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
switch (Request["t"])
{
case "kaixin":
KaixinLogin();
break;
case "qq":
QQLogin();
break;
case "sina":
SinaLogin();
break;
case "renren":
RenrenLogin();
break;
}
}
protected void RenrenLogin()
{
string client_id = System.Configuration.ConfigurationManager.AppSettings["app_key_renren"];
string response_type = "code";
string redirect_uri = "http://127.0.0.1:17509/callback.aspx?s=renren";
string url = string.Format("https://graph.renren.com/oauth/authorize?client_id={0}&redirect_uri={1}&response_type={2}", client_id, redirect_uri, response_type);
Response.Redirect(url);
}
protected void KaixinLogin()
{
string client_id = System.Configuration.ConfigurationManager.AppSettings["app_key_kaixin"];
string response_type = "code";
string redirect_uri = "http://127.0.0.1:17509/callback.aspx?s=kaixin";
string url = string.Format("http://api.kaixin001.com/oauth2/authorize?response_type={0}&client_id={1}&redirect_uri={2}&scope=basic&display=popup",
response_type, client_id, redirect_uri);
Response.Redirect(url);
}
protected void QQLogin()
{
string client_id = System.Configuration.ConfigurationManager.AppSettings["app_key_qq"];
string response_type = "code";
string redirect_uri = "http://127.0.0.1:17509/callback.aspx?s=qq";
string url = string.Format("https://open.t.qq.com/cgi-bin/oauth2/authorize?client_id={0}&redirect_uri={1}&response_type={2}", client_id, redirect_uri, response_type);
Response.Redirect(url);
}
protected void SinaLogin()
{
string client_id = System.Configuration.ConfigurationManager.AppSettings["app_key"];
string response_type = "code";
string redirect_uri = "http://localhost:17509/callback.aspx?s=sina";
string url = string.Format("https://api.weibo.com/oauth2/authorize?client_id={0}&redirect_uri={1}&response_type={2}", client_id, redirect_uri, response_type);
Response.Redirect(url);
}
}
}
// callback.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections.Specialized;
using Newtonsoft.Json.Linq;
namespace AppDemo
{
public partial class CallBack : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
switch (Request["s"])
{
case "kaixin":
GetKaixinToken();
break;
case "qq":
GetQQToken();
break;
case "sina":
GetSinaToken();
break;
case "renren":
GetRenRenToken();
break;
}
}
protected void GetKaixinToken()
{
if (Request["code"] != null)
{
string client_id = System.Configuration.ConfigurationManager.AppSettings["app_key_kaixin"];
string client_secret = System.Configuration.ConfigurationManager.AppSettings["app_secret_kaixin"];
string grant_type = "authorization_code";
string code = Request["code"].ToString();
string redirect_uri = "http://127.0.0.1:17509/callback.aspx?s=kaixin";
string url = "https://api.kaixin001.com/oauth2/access_token";
string postData = string.Format("grant_type={2}&code={3}&client_id={0}&client_secret={1}&redirect_uri={4}", client_id, client_secret, grant_type, code, redirect_uri);
HttpData http = new HttpData();
string responseData = http.WebRequest("post", url, postData);
OathTokenKaixin token = JsonHelper.ParseFormJson<OathTokenKaixin>(responseData);
Session["access_token"] = token.access_token;
//Session["uid"] = token.uid;
Response.Redirect("Default.aspx?s=" + Request["s"]);
}
}
protected void GetQQToken()
{
if (Request["code"] != null)
{
string client_id = System.Configuration.ConfigurationManager.AppSettings["app_key_qq"];
string client_secret = System.Configuration.ConfigurationManager.AppSettings["app_secret_qq"];
string grant_type = "authorization_code";
string code = Request["code"].ToString();
string redirect_uri = "http://127.0.0.1:17509/callback.aspx?s=qq";
string url = "https://open.t.qq.com/cgi-bin/oauth2/access_token";
string postData = string.Format("client_id={0}&client_secret={1}&grant_type={2}&code={3}&redirect_uri={4}", client_id, client_secret, grant_type, code, redirect_uri);
HttpData http = new HttpData();
string responseData = http.WebRequest("post", url, postData);
NameValueCollection qs = HttpUtility.ParseQueryString(responseData);
Session["access_token"] = qs["access_token"];
Session["name"] = qs["name"];
Session["uid"] = Request["openid"];
Response.Redirect("Default.aspx?s=" + Request["s"]);
}
}
protected void GetSinaToken()
{
if (Request["code"] != null)
{
string client_id = System.Configuration.ConfigurationManager.AppSettings["app_key"];
string client_secret = System.Configuration.ConfigurationManager.AppSettings["app_secret"];
string grant_type = "authorization_code";
string code = Request["code"].ToString();
string redirect_uri = "http://localhost:17509/callback.aspx?s=sina";
string url = "https://api.weibo.com/oauth2/access_token";
string postData = string.Format("client_id={0}&client_secret={1}&grant_type={2}&code={3}&redirect_uri={4}", client_id, client_secret, grant_type, code, redirect_uri);
HttpData http = new HttpData();
string responseData = http.WebRequest("post", url, postData);
OathToken token = JsonHelper.ParseFormJson<OathToken>(responseData);
Session["access_token"] = token.access_token;
Session["uid"] = token.uid;
Response.Redirect("Default.aspx?s="+Request["s"]);
}
}
protected void GetRenRenToken()
{
if (Request["code"] != null)
{
string client_id = System.Configuration.ConfigurationManager.AppSettings["app_key_renren"];
string client_secret = System.Configuration.ConfigurationManager.AppSettings["app_secret_renren"];
string grant_type = "authorization_code";
string code = Request["code"].ToString();
string redirect_uri = "http://127.0.0.1:17509/callback.aspx?s=renren";
string url = "https://graph.renren.com/oauth/token";
string postData = string.Format("grant_type={2}&client_id={0}&redirect_uri={4}&client_secret={1}&code={3}", client_id, client_secret, grant_type, code, redirect_uri);
HttpData http = new HttpData();
string responseData = http.WebRequest("post", url, postData);
var decodedJSON = JObject.Parse(responseData);
Session["uid"] = decodedJSON["user"]["id"];
Session["uname"] = decodedJSON["user"]["name"];
Session["access_token"] =decodedJSON["access_token"];
Response.Redirect("Default.aspx?s=" + Request["s"]);
}
}
public class OathToken
{
public string access_token { get; set; }
public string expires_in { get; set; }
public string remind_in { get; set; }
public string uid { get; set; }
}
public class OathTokenKaixin
{
public string access_token { get; set; }
public string expires_in { get; set; }
public string refresh_token { get; set; }
public string scope { get; set; }
}
public class OathTokenRenren
{
public string access_token { get; set; }
public string expires_in { get; set; }
public string refresh_token { get; set; }
public string scope { get; set; }
}
//var json = request.HttpGet(getTokensURL);
//var decodedJSON = JObject.Parse(json);
//var error = decodedJSON["error"];
}
}
// 引用 using Newtonsoft.Json.Linq;
string responseData = http.WebRequest("post", url, postData);
var decodedJSON = JObject.Parse(responseData);
Session["uid"] = decodedJSON["user"]["id"];
Session["uname"] = decodedJSON["user"]["name"];
Session["access_token"] =decodedJSON["access_token"];
//web.config
<appSettings>
<add key="app_key" value="2888466971"/>
<add key="app_secret" value="cb79c5fff879dad8c427cXXXXXXXXXX"/>
<add key="app_key_qq" value="801194852"/>
<add key="app_secret_qq" value="390bc8a51f3f94bc091XXXXXXXXXX"/>
<add key="app_openid_qq" value=""/>
<add key="app_key_kaixin" value="91860610107018e7ff8XXXXXXXX"/>
<add key="app_secret_kaixin" value="2b3de87b91ea6f7d68522cb744a487f4"/>
<add key="app_key_renren" value="e6ef82b1233e4b71XXXXXXXXX"/>
<add key="app_secret_renren" value="3d4e8de4fde1411fa693cea0ea0ab691"/>
</appSettings>