zoukankan      html  css  js  c++  java
  • 【第三方登录】之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     }
  • 相关阅读:
    [转] Oracle数据库备份与恢复
    Oracle RMAN 恢复控制文件到指定的路径
    [转] AIX lv 4k偏移量
    关于oracle 10g creating datafile with zero offset for aix
    linux中的chage命令
    [转] Oracle sql 查询突然变慢 -- 案例分析
    [转] Oracle analyze table 使用总结
    [转] Oracle analyze 命令分析
    .net 事务
    _BIN 二进制排序
  • 原文地址:https://www.cnblogs.com/vincentvoid/p/4646014.html
Copyright © 2011-2022 走看看