不知道為什么QQ沒有提供.NET的QQ登錄接口。今天教大家做.net下的qq登錄接口,首先需要2個DLL文件來處理JSON,2個DLL文件相信用C#吹過JSON的都非常熟悉了,分別是 Newtonsoft.Json.dll 及 RestSharp.dll 大家可以自己在網上找一下下載即可。
下面正式開始寫代碼:
1.發送QQ認證
Session["st"]= FormsAuthentication.HashPasswordForStoringInConfigFile("[靜態KEY 隨便填用來 MD5加密]"+DateTime.Now.ToString(), "MD5");
Response.Redirect("https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=[申請的APP_ID]&redirect_uri=[返回的URL]&state=" + Session["st"]);
2.根據返回的代碼來來獲取信息
//判斷state加密值
if (Session["st"].ToString() == Request["state"].ToString())
{
//獲取access_token
var client = new RestClient("https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=[app_id]&client_secret=[app_key]&code="+ Request["code"]+"&redirect_uri=[返回的URL]");
var rest = new RestRequest(Method.GET);
RestResponse response = client.Execute(rest);
//這里直接截取了access_tken的字段
var content = response.Content.Substring(13,32);
//獲取到用戶OpenID
var client1 = new RestClient("https://graph.qq.com/oauth2.0/me?access_token="+content);
var rest1 = new RestRequest(Method.GET);
//這里直接截取了openID的字段
RestResponse response1 = client1.Execute(rest1);
var content1 = response1.Content.Substring(45, 32);
//獲取用戶信息
var client2 = new RestClient("https://graph.qq.com/user/get_user_info?access_token=" + content + "&oauth_consumer_key=[app_id]&openid="+content1+"&format=json");
//+"&format=json"); 這段千萬不能漏掉,做單機測試的時候不加也可以,但是正式使用的時候不加會獲取不到數據不知道為什么。。
var rest2 = new RestRequest(Method.GET);
RestResponse response2 = client2.Execute(rest2);
var content2 = response2.Content;
//打印access_token
Response.Write(content);
Response.Write("</br>");
Response.Write("</br>");
//打印OpenID
Response.Write(content1);
Response.Write("</br>");
Response.Write("</br>");
//打印整個json
Response.Write(content2);
//定義一個JSON字符串
string jsonText = content2;
//反序列化JSON字符串
JObject ja = JsonConvert.DeserializeObject(jsonText) as JObject;
Response.Write("</br>");
Response.Write("</br>");
//打印用戶名
Response.Write("您好:" + ja["nickname"] + "!");
這應該是最簡單的 .net下的qq登錄接口了。希望對做.net 的朋友有所幫助。當然如果需要做網站的話一定要找上海做網站最專業的波宇網絡哦!