最近公司做了个网站,需要用到第三方登录的东西。有QQ第三方登录,微信第三方登录。先把QQ第三方登录的代码列一下吧。
1 public partial class QQBack : System.Web.UI.Page 2 { 3 protected void Page_Load(object sender, EventArgs e) 4 { 5 Log.Debug("QQ登录", "登录开始"); 6 string app_id = ""; 7 var serializer = new JavaScriptSerializer(); 8 var data = ""; 9 Dictionary<string, string> obj = new Dictionary<string, string>(); 10 //获取 accessToken 11 string code = Request.QueryString["code"]; 12 if (!string.IsNullOrEmpty(code)) 13 { 14 string url = string.Format("https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id={0}&client_secret=872660e40efb3b16eecfce835b3ce081&code={1}&state={2}&redirect_uri={3}" 15 , app_id 16 , code 17 , "test" 18 , "回调地址,还是当前页面地址,以http://www.xxx.com/xxx.aspx 模式,并且对地址进行编码!"); 19 20 data = Tools.GetPage(url); 21 Log.Debug("第一个地址:", data); 22 string accessToken = ""; 23 string[] array_access_token = data.Split('&'); 24 if (array_access_token != null && array_access_token.Length > 0) 25 { 26 for (int i = 0; i < array_access_token.Length; i++) 27 { 28 if (!string.IsNullOrEmpty(array_access_token[i])) 29 { 30 string[] keyValue = array_access_token[i].Split('='); 31 32 if (keyValue != null && keyValue.Length > 0) 33 { 34 if (keyValue[0] == "access_token") 35 { 36 accessToken = keyValue[1]; 37 } 38 } 39 } 40 } 41 } 42 43 //获取OpenID 44 string url2 = "https://graph.qq.com/oauth2.0/me?access_token=" + accessToken; 45 data = Tools.GetPage(url2); 46 Log.Debug("第二个地址:", data); 47 data = data.Replace("callback(", "").Replace(");", ""); 48 obj = serializer.Deserialize<Dictionary<string, string>>(data); 49 string openid; 50 if (!obj.TryGetValue("openid", out openid)) 51 return; 52 53 string url3 = string.Format("https://graph.qq.com/user/get_user_info?access_token={0}&oauth_consumer_key={1}&openid={2}", accessToken, app_id, openid); 54 55 data = Tools.GetPage(url3); 56 Log.Debug("第三个地址:", data); 57 var userInfo = serializer.Deserialize<Dictionary<string, string>>(data); 58 59 if (openid != null && userInfo["nickname"] != null) 60 { 61 Users _MTUsers = GetModel( openid); //获取用户信息 62 63 if (_MTUsers == null) 64 { 65 Insert(_MTUsers); //如果不存在,创建 66 } 67 else 68 { 69 _MTUsers.LastLogin = DateTime.Now; 70 _MTUsers.LastUpdated = DateTime.Now; 71 Instance.MTUsers.Business.Update(_MTUsers); //存在则修改 72 } 73 Session["CurrentUser"] = _MTUsers; //将当前登录的用户放入session中 74 Log.Debug("QQ登录", "执行页面跳转成功"); 75 } 76 } 77 Log.Debug("QQ登录", "登录结束"); 78 } 79 }