这里有新鲜出炉的精品教程, 程序狗速度看过来!
ASP.NET
ASP.NET 是. NET FrameWork 的一部分, 是一项微软公司的技术, 是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术, 它可以在通过 HTTP 请求文档时再在 web 服务器上动态创建它们 指 Active Server Pages(动态服务器页面) , 运行于 IIS(Internet Information Server 服务, 是 Windows 开发的 Web 服务器)之中的程序
相信大家在做开发的时候, 常会遇到集成 QQ 登录的功能, 本文主要说的是利用 asp.net 代码的实现方式, 逻辑部分主要还是根据帮助文档来的不懂的同学可以先看看文档下面来一起学习学习
话不多说, 直接上代码吧:
- string client_id = "分配的 APP ID";
- string appid = "分配的 APP KEY";
- string Return_url = "返回处理的 url";
- public string Authorize()
- {
- string state = new Random(100000).Next(99, 99999).ToString();// 随机数
- HttpHelper http = new HttpHelper();
- string url = string.Format("https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id={0}&redirect_uri={1}&state={2}", client_id, Return_url, state);
- string str="<script> location.href='" + url + "'</script>";
- return str;
- }
点击事件直接调用 Authorize()就可以了, 我是直接用跳转链接处理的
- protected void Page_Load(object sender, EventArgs e)
- {
- QQ_Login q = new QQ_Login();
- string url = q.Authorize();// 这里调用
- Response.Write(url);
- }
效果:
点击图像, 接着在, 回调的 url 里面调用下面的方法, 参数再往下看一点;
- public User_info Back_User(string code)
- {
- string state = new Random(100000).Next(99, 99999).ToString();// 随机数
- User_info ui = new User_info();
- string url = string.Format("https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id={0}&client_secret={1}&code={2}&redirect_uri={3}&state={4}", client_id, appid, code, Return_url, state);
- string uu = HttpHelper.htmlFromUrlGet(url);// 处理 http 请求帮助类
- string code1 = uu.Split('&')[0].Split('=')[1].ToString();// 获得 access_token
- // 根基 access_token 获取用户唯一 OpenID
- string url_me = string.Format("https://graph.qq.com/oauth2.0/me?access_token={0}" , code1);
- string callback = HttpHelper.HtmlFromUrlGet(url_me);// 这里获取的
- callback = callback.Substring(callback.IndexOf('(') + 1, (callback.IndexOf(')') - callback.IndexOf('(') - 1)).Trim();
- // dynamic jsonP = JValue.FromObject(callback); // 这里我用的是一个序列化类库 Newtonsoft.Json.dll 6.0.4 版本无奈公司版本过低 只能用 4.0 的版本 建议使用 6.0.4 版本
- a jsonP = JsonConvert.DeserializeObject<a>(callback);//Newtonsoft.Json.dll 4.0 或 4.5 版本
- string OpenID = jsonP.openid;// 获取用户唯一的 OpenID
- // 根据 OpenID 获取用户信息 可以显示更多 用的就几个 需要的可以自己在下面加
- string getinfo = string.Format("https://graph.qq.com/user/get_user_info?access_token={0}&oauth_consumer_key={1}&openid={2}", code1, client_id, OpenID);
- string user = HttpHelper.HtmlFromUrlGet(getinfo);
- b info = JsonConvert.DeserializeObject<b>(user);
- ui.Name = info.nickname;
- ui.OpenID = OpenID;
- ui.img_qq100 = info.figureurl_qq_1;
- ui.img_qq50 = info.figureurl_qq_2;
- ui.city = info.city;
- ui.year = info.year;
- ui.Type = 1;
- return ui;
- }
点击图像时跳转到指定的回调地址, 并在 redirect_uri 地址后带上 Authorization Code;
- User_info ui = new User_info();
- var verifier = Request.Params["code"]; // 获取 Authorization Code
ui = q.Back_User(verifier); 掉用方法并返回数据
再把返回的类贴出来吧
- public class User_info
- {
- public string OpenID { get; set; }// 用户唯一 appid
- public string Name { get; set; }
- public string img_qq50 { get; set; } //QQ 图像 40*40
- public string img_qq100 { get; set; }
- public string city { get; set; }
- public int year { get; set; }
- }
- public class a {
- public string client_id { get; set; }
- public string openid { get; set; }
- }
总结
基本就完了, 代码就这么多了, 感兴趣的同学自己动手操作操作才能更加熟悉, 希望本文对大家能有所帮助
来源: http://www.phperz.com/article/18/0309/352518.html