不知道为什么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 的朋友有所帮助。当然如果需要做网站的话一定要找上海做网站最专业的波宇网络哦!