예제 #1
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string QQreturnstr = QQOAuth.GetTempToken();

        if (QQreturnstr.IndexOf("error_code") < 0)
        {
            //获得临时令牌成功
            string[] temps = QQreturnstr.Split('&', '=');
            Session["oauth_token_secret"] = temps[3];
            Response.Redirect("https://graph.qq.com/user/get_user_info?oauth_consumer_key=" + QQOAuth.appid + "&oauth_token=" + temps[1] + "&oauth_callback=http://www.wafxw.cn/oauth/GetRightQQTonken.aspx");
        }
    }
예제 #2
0
		public JsonResult QQ(string code, string state)
		{
			QQOAuth m = new QQOAuth();
			JsonResult json = new JsonResult();
			json.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
			string token = m.Token(code, state);
			if (!string.IsNullOrEmpty(token))
			{
				string openid = m.OpenID();
				if (!string.IsNullOrEmpty(openid))
				{
					var user = m.GetUserInfo();
					json.Data = new object[] { user }; 
				}
			}
			return json;
		}
예제 #3
0
        public JsonResult QQ(string code, string state)
        {
            QQOAuth    m    = new QQOAuth();
            JsonResult json = new JsonResult();

            json.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            string token = m.Token(code, state);

            if (!string.IsNullOrEmpty(token))
            {
                string openid = m.OpenID();
                if (!string.IsNullOrEmpty(openid))
                {
                    var user = m.GetUserInfo();
                    json.Data = new object[] { user };
                }
            }
            return(json);
        }
예제 #4
0
        public IActionResult Index(
            string type,
            [FromServices] BaiduOAuth baiduOAuth,
            [FromServices] WechatOAuth wechatOAuth,
            [FromServices] GitlabOAuth gitlabOAuth,
            [FromServices] GiteeOAuth giteeOAuth,
            [FromServices] GithubOAuth githubOAuth,
            [FromServices] HuaweiOAuth huaweiOAuth,
            [FromServices] CodingOAuth codingOAuth,
            [FromServices] SinaWeiboOAuth sinaWeiboOAuth,
            [FromServices] AlipayOAuth alipayOAuth,
            [FromServices] QQOAuth qqOAuth,
            [FromServices] OSChinaOAuth oschinaOAuth,
            [FromServices] DouYinOAuth douYinOAuth
            )
        {
            var redirectUrl = "";

            switch (type.ToLower())
            {
            case "baidu":
            {
                redirectUrl = baiduOAuth.GetAuthorizeUrl();
                break;
            }

            case "wechat":
            {
                redirectUrl = wechatOAuth.GetAuthorizeUrl();
                break;
            }

            case "gitlab":
            {
                redirectUrl = gitlabOAuth.GetAuthorizeUrl();
                break;
            }

            case "gitee":
            {
                redirectUrl = giteeOAuth.GetAuthorizeUrl();
                break;
            }

            case "github":
            {
                redirectUrl = githubOAuth.GetAuthorizeUrl();
                break;
            }

            case "huawei":
            {
                redirectUrl = huaweiOAuth.GetAuthorizeUrl();
                break;
            }

            case "coding":
            {
                redirectUrl = codingOAuth.GetAuthorizeUrl();
                break;
            }

            case "sinaweibo":
            {
                redirectUrl = sinaWeiboOAuth.GetAuthorizeUrl();
                break;
            }

            case "alipay":
            {
                redirectUrl = alipayOAuth.GetAuthorizeUrl();
                break;
            }

            case "qq":
            {
                redirectUrl = qqOAuth.GetAuthorizeUrl();
                break;
            }

            case "oschina":
            {
                redirectUrl = oschinaOAuth.GetAuthorizeUrl();
                break;
            }

            case "douyin":
            {
                redirectUrl = douYinOAuth.GetAuthorizeUrl();
                break;
            }

            default:
                return(ReturnToError($"没有实现【{type}】登录方式!"));
            }
            return(Redirect(redirectUrl));
        }
예제 #5
0
        public async Task <IActionResult> LoginCallback(
            string type,
            [FromServices] BaiduOAuth baiduOAuth,
            [FromServices] WechatOAuth wechatOAuth,
            [FromServices] GitlabOAuth gitlabOAuth,
            [FromServices] GiteeOAuth giteeOAuth,
            [FromServices] GithubOAuth githubOAuth,
            [FromServices] HuaweiOAuth huaweiOAuth,
            [FromServices] CodingOAuth codingOAuth,
            [FromServices] SinaWeiboOAuth sinaWeiboOAuth,
            [FromServices] AlipayOAuth alipayOAuth,
            [FromServices] QQOAuth qqOAuth,
            [FromServices] OSChinaOAuth oschinaOAuth,
            [FromServices] DouYinOAuth douYinOAuth,
            [FromQuery] string code,
            [FromQuery] string state,
            [FromQuery] string error_description = "")
        {
            Console.WriteLine($"LoginCallback [{HttpContext.Request.Path}]");
            try
            {
                if (!string.IsNullOrEmpty(error_description))
                {
                    throw new Exception(error_description);
                }
                HttpContext.Session.SetString("OAuthPlatform", type.ToLower());
                switch (type.ToLower())
                {
                case "baidu":
                {
                    var authorizeResult = await baiduOAuth.AuthorizeCallback(code, state);

                    if (!authorizeResult.IsSccess)
                    {
                        throw new Exception(authorizeResult.ErrorMessage);
                    }
                    HttpContext.Session.Set("OAuthUser", authorizeResult.UserInfo.ToUserInfoBase());
                    HttpContext.Session.Set("OAuthUserDetail", authorizeResult.UserInfo, true);
                    break;
                }

                case "wechat":
                {
                    var authorizeResult = await wechatOAuth.AuthorizeCallback(code, state);

                    if (!authorizeResult.IsSccess)
                    {
                        throw new Exception(authorizeResult.ErrorMessage);
                    }
                    HttpContext.Session.Set("OAuthUser", authorizeResult.UserInfo.ToUserInfoBase());
                    HttpContext.Session.Set("OAuthUserDetail", authorizeResult.UserInfo, true);
                    break;
                }

                case "gitlab":
                {
                    var authorizeResult = await gitlabOAuth.AuthorizeCallback(code, state);

                    if (!authorizeResult.IsSccess)
                    {
                        throw new Exception(authorizeResult.ErrorMessage);
                    }
                    HttpContext.Session.Set("OAuthUser", authorizeResult.UserInfo.ToUserInfoBase());
                    HttpContext.Session.Set("OAuthUserDetail", authorizeResult.UserInfo, true);
                    break;
                }

                case "gitee":
                {
                    var authorizeResult = await giteeOAuth.AuthorizeCallback(code, state);

                    if (!authorizeResult.IsSccess)
                    {
                        throw new Exception(authorizeResult.ErrorMessage);
                    }
                    HttpContext.Session.Set("OAuthUser", authorizeResult.UserInfo.ToUserInfoBase());
                    HttpContext.Session.Set("OAuthUserDetail", authorizeResult.UserInfo, true);
                    break;
                }

                case "github":
                {
                    var authorizeResult = await githubOAuth.AuthorizeCallback(code, state);

                    if (!authorizeResult.IsSccess)
                    {
                        throw new Exception(authorizeResult.ErrorMessage);
                    }
                    HttpContext.Session.Set("OAuthUser", authorizeResult.UserInfo.ToUserInfoBase());
                    HttpContext.Session.Set("OAuthUserDetail", authorizeResult.UserInfo, true);
                    break;
                }

                case "huawei":
                {
                    var authorizeResult = await huaweiOAuth.AuthorizeCallback(code, state);

                    if (!authorizeResult.IsSccess)
                    {
                        throw new Exception(authorizeResult.ErrorMessage);
                    }
                    HttpContext.Session.Set("OAuthUser", authorizeResult.UserInfo.ToUserInfoBase());
                    HttpContext.Session.Set("OAuthUserDetail", authorizeResult.UserInfo, true);
                    break;
                }

                case "coding":
                {
                    var authorizeResult = await codingOAuth.AuthorizeCallback(code, state);

                    if (!authorizeResult.IsSccess)
                    {
                        throw new Exception(authorizeResult.ErrorMessage);
                    }
                    HttpContext.Session.Set("OAuthUser", authorizeResult.UserInfo.ToUserInfoBase());
                    HttpContext.Session.Set("OAuthUserDetail", authorizeResult.UserInfo, true);
                    break;
                }

                case "sinaweibo":
                {
                    var authorizeResult = await sinaWeiboOAuth.AuthorizeCallback(code, state);

                    if (!authorizeResult.IsSccess)
                    {
                        throw new Exception(authorizeResult.ErrorMessage);
                    }
                    HttpContext.Session.Set("OAuthUser", authorizeResult.UserInfo.ToUserInfoBase());
                    HttpContext.Session.Set("OAuthUserDetail", authorizeResult.UserInfo, true);
                    break;
                }

                case "alipay":
                {
                    code = HttpContext.Request.Query["auth_code"];
                    var authorizeResult = await alipayOAuth.AuthorizeCallback(code, state);

                    if (!authorizeResult.IsSccess)
                    {
                        throw new Exception(authorizeResult.ErrorMessage);
                    }
                    HttpContext.Session.Set("OAuthUser", authorizeResult.UserInfo.ToUserInfoBase());
                    HttpContext.Session.Set("OAuthUserDetail", authorizeResult.UserInfo, true);
                    break;
                }

                case "qq":
                {
                    var authorizeResult = await qqOAuth.AuthorizeCallback(code, state);

                    if (!authorizeResult.IsSccess)
                    {
                        throw new Exception(authorizeResult.ErrorMessage);
                    }
                    HttpContext.Session.Set("OAuthUser", authorizeResult.UserInfo.ToUserInfoBase());
                    HttpContext.Session.Set("OAuthUserDetail", authorizeResult.UserInfo, true);
                    break;
                }

                case "oschina":
                {
                    var authorizeResult = await oschinaOAuth.AuthorizeCallback(code, state);

                    if (!authorizeResult.IsSccess)
                    {
                        throw new Exception(authorizeResult.ErrorMessage);
                    }
                    HttpContext.Session.Set("OAuthUser", authorizeResult.UserInfo.ToUserInfoBase());
                    HttpContext.Session.Set("OAuthUserDetail", authorizeResult.UserInfo, true);
                    break;
                }

                case "douyin":
                {
                    var authorizeResult = await douYinOAuth.AuthorizeCallback(code, state);

                    if (!authorizeResult.IsSccess)
                    {
                        throw new Exception(authorizeResult.ErrorMessage);
                    }
                    HttpContext.Session.Set("OAuthUser", authorizeResult.UserInfo.ToUserInfoBase());
                    HttpContext.Session.Set("OAuthUserDetail", authorizeResult.UserInfo, true);
                    break;
                }

                default:
                    throw new Exception($"没有实现【{type}】登录回调!");
                }
                return(RedirectToAction("Result"));
            }
            catch (Exception ex)
            {
                HttpContext.Session.Remove("OAuthPlatform");
                HttpContext.Session.Remove("OAuthUser");
                HttpContext.Session.Remove("OAuthUserDetail");
                Console.WriteLine(ex.ToString());
                return(ReturnToError(ex.Message));
            }
        }
예제 #6
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //QQOAuth QQOAuth = new QQOAuth();
            if (Request.QueryString["oauth_token"] != null)
            {
                string oauth_token    = Request.QueryString["oauth_token"].Trim();
                string oauth_vericode = Request.QueryString["oauth_vericode"].Trim();
                string accesstokenstr = QQOAuth.GetAccessToken(oauth_token, oauth_vericode, Session["oauth_token_secret"].ToString());
                if (accesstokenstr.IndexOf("error_code") < 0)
                {
                    Hashtable myvar = QQOAuth.Str2Hash(accesstokenstr);
                    Session["oauth_token_secret"] = myvar["oauth_token_secret"].ToString();
                    string usernickname = "QQ用户";
                    #region 通过API获得用户的昵称,存储到变量usernick中
                    string       xmlstr = QQOAuth.GetQQUserInfo(myvar["oauth_token"].ToString(), myvar["openid"].ToString(), Session["oauth_token_secret"].ToString());
                    DataSet      dsxml  = new DataSet();
                    MemoryStream ms     = new MemoryStream(Encoding.UTF8.GetBytes(xmlstr));
                    dsxml.ReadXml(ms, XmlReadMode.InferSchema);
                    foreach (DataRow dr in dsxml.Tables[0].Rows)
                    {
                        if (dr["ret"].ToString() == "0")
                        {
                            usernickname = dr["nickname"].ToString();
                        }
                    }



                    #endregion
                    //绑定帐户
                    //if (JVBox.DAL.AD_MyHandCode.Exists(myvar["openid"].ToString()))
                    //{
                    //    #region 账号已经存在自动登陆
                    //    DataSet ds = JVBox.DAL.AD_MyHandCode.LoginData(myvar["openid"].ToString(), myvar["openid"].ToString());
                    //    if (ds.Tables[0].Rows.Count > 0)
                    //    {
                    //        JVBoxAppCode.Session.Add("UserName", ds.Tables[0].Rows[0]["username"].ToString(), 120);
                    //        JVBoxAppCode.Session.Add("UserId", ds.Tables[0].Rows[0]["userid"].ToString(), 120);
                    //        JVBoxAppCode.Session.Add("NickName", ds.Tables[0].Rows[0]["NickName"].ToString(), 120);
                    //        Response.Redirect("../index.aspx");
                    //    }
                    //    #endregion
                    //}
                    //else
                    //{
                    //    #region 绑定注册 并且自动登录不存在就绑定
                    //    JVBox.DAL.SYS_SystemUsers dal = new JVBox.DAL.SYS_SystemUsers();
                    //    JVBox.Model.SYS_SystemUsers mod = new JVBox.Model.SYS_SystemUsers();
                    //    mod.UserName = myvar["openid"].ToString();
                    //    mod.PassWord = myvar["openid"].ToString();
                    //    mod.Email = "";
                    //    mod.Integral = 1;
                    //    mod.Address = "";
                    //    mod.HisMoney = 10;
                    //    mod.IsLocked = false;
                    //    mod.Mobile = "";
                    //    mod.NickName = usernickname;
                    //    mod.OrgId = 1;
                    //    mod.RealName = "";
                    //    mod.Status = 1;
                    //    mod.LastLoginIp = IPHelp.ClientIP;
                    //    mod.LastLoginTime = DateTime.Now.ToString();
                    //    mod.RegTime = DateTime.Now;
                    //    mod.Status = 1;
                    //    int vl = dal.Add(mod);
                    //    if (vl > 0)
                    //    {
                    //        DataSet ds = JVBox.DAL.AD_MyHandCode.LoginData(myvar["openid"].ToString(), myvar["openid"].ToString());
                    //        if (ds.Tables[0].Rows.Count > 0)
                    //        {
                    //            JVBoxAppCode.Session.Add("UserName", ds.Tables[0].Rows[0]["username"].ToString(), 120);
                    //            JVBoxAppCode.Session.Add("UserId", ds.Tables[0].Rows[0]["userid"].ToString(), 120);
                    //            JVBoxAppCode.Session.Add("NickName", ds.Tables[0].Rows[0]["NickName"].ToString(), 120);
                    //            Response.Redirect("../index.aspx");
                    //        }
                    //    }
                    //    else
                    //    {
                    //        JScript.Alert("帮定帐号失败", this.Page);
                    //    }
                    //    #endregion
                    //}
                }
            }
        }
예제 #7
0
        public ActionResult QQ(string t)
        {
            string url = QQOAuth.AuthorizeURL(t);

            return(RedirectPermanent(url));
        }