【第三方登录】之QQ第三方登录

最近公司做了个网站,需要用到第三方登录的东西。有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     }

 

posted @ 2015-07-14 17:22  Vincent_void  阅读(366)  评论(0编辑  收藏  举报