public ActionResult LogOnByQQ()
        {
            var context = new QzoneSDK.Context.QzoneContext(key, secret);

#if DEBUG
            var callbackUrl = "http://localhost:4487/Home/Index"; //"/qzone/account/QQCallback.aspx";
#else
            var callbackUrl = "http://wysky.org/Account/LogOnByQQCallback";
#endif
            var requestToken = context.GetRequestToken(callbackUrl);
            Session["requesttokensecret"] = requestToken.TokenSecret;
            var authenticationUrl = context.GetAuthorizationUrl(requestToken, callbackUrl);

            return(Redirect(authenticationUrl));
        }
Example #2
0
        private void GetRequestToken()
        {
            string key = ConfigurationManager.AppSettings["ConsumerKey"];
            string secret = ConfigurationManager.AppSettings["ConsumerSecret"];

            var context = new QzoneSDK.Context.QzoneContext(key, secret);
            //Get a Request Token
            var callbackUrl = ConfigurationManager.AppSettings["callbackUrl"];
            var requestToken = context.GetRequestToken(callbackUrl);
            //request token, request token secret 需要保存起来
            //在demo演示中,直接保存在全局变量中.真实情况需要网站自己处理
            Session["requesttokenkey"] = requestToken.TokenKey;
            Session["requesttokensecret"] = requestToken.TokenSecret;

            //Get the Qzone authentication page for the user to go to in order to authorize the Request Token.
            var authenticationUrl = context.GetAuthorizationUrl(requestToken, callbackUrl);
            Response.Redirect(authenticationUrl);
        }
        public ActionResult LoginQZone()
        {
            string key = ConfigurationManager.AppSettings["ConsumerKey"];
            string secret = ConfigurationManager.AppSettings["ConsumerSecret"];

            var context = new QzoneSDK.Context.QzoneContext(key, secret);
            string callbackUrl = ConfigurationManager.AppSettings["CallbackUrl"];
            var requestTokey = context.GetRequestToken(callbackUrl);
            Session["requestTokenKey"] = requestTokey.TokenKey;
            Session["requestTokeySecret"] = requestTokey.TokenSecret;

            var authenticationUrl = context.GetAuthorizationUrl(requestTokey, callbackUrl);
            return Redirect(authenticationUrl);
        }
Example #4
0
        protected override void ShowPage()
        {
            var callbackUrlParam = "";

            #region 检查是否开启插件
            if (qzlConfig.EnableQQLogin != 1)
            {
                pagetitle = "QQ 登录插件没有开启";
                wysky_page_msg = "<script type=\"text/javascript\">alert('QQ 登录插件没有开启,请联系管理员!');window.close();</script>";
                return;
            }
            #endregion

            #region 检查登录状态
            var isBind = DNTRequest.GetInt("bind", 0);
            if (isBind > 0)
            {
                //如果是绑定/解绑,则要求登录状态才能使用
                if (userid == -1)
                {
                    pagetitle = "请登录后再进行 QQ 绑定";
                    wysky_page_msg = "<script type=\"text/javascript\">alert('请登录后再进行 QQ 绑定!');window.opener.location.href='login.aspx';window.close();</script>";
                    return;
                }

                if (isBind == 1 && BLL.Main.GetQqOpenidByUID(userid) != string.Empty)
                {
                    pagetitle = "你已经绑定过 QQ";
                    wysky_page_msg = "<script type=\"text/javascript\">alert('你已经绑定过 QQ,如果想要更换绑定,请先取消之前的绑定!');window.close();</script>";
                    return;
                }
                if (isBind == 2)
                {
                    if (DNTRequest.GetInt("addpwd", 0) == 1)
                    {
                        var newPassword = DNTRequest.GetString("password");
                        var newPassword2 = DNTRequest.GetString("password2");
                        pagetitle = "输入内容有误";
                        if (newPassword == string.Empty)
                        {
                            AddErrLine("密码不能为空!");
                            return;
                        }
                        if (newPassword != newPassword2)
                        {
                            AddErrLine("两次输入不一致!");
                            return;
                        }
                        UserInfo userinfo = Users.GetUserInfo(userid);
                        userinfo.Password = newPassword;
                        Users.ResetPassword(userinfo);
                    }
                    if (BLL.Main.IsNullPasswordUser(userid))
                    {
                        showdelbindpasswordform = 1;
                        return;
                    }
                    //解绑
                    BLL.Main.DeleteQqLoginInfo("", userid);
                    pagetitle = "已经解除绑定";
                    wysky_page_msg = "<script type=\"text/javascript\">alert('已经解除 QQ 帐号绑定!');window.opener.location.reload();window.close();</script>";
                    return;
                }
                callbackUrlParam += "&bind=" + isBind;
            }
            else
            {
                //如果不是绑定,即为QQ登录,则要求在非登录状态
                if (userid != -1)
                {
                    pagetitle = "您已经登录";
                    wysky_page_msg = "<script type=\"text/javascript\">alert('您已经登录了,请不要重复登录!');window.opener.location.reload();window.close();</script>";
                    return;
                }
            }
            #endregion

            #region 开始接入
            if (DNTRequest.GetInt("callback", 0) == 0)
            {
                //第一次发送
                pagetitle = "使用QQ帐号登录";
                var context = new QzoneSDK.Context.QzoneContext(qzlConfig.AppId, qzlConfig.AppKey);
                var callbackUrl = string.Format(
                    "http://{0}/{1}QZoneLogin.aspx?callback=1{2}",
                    DNTRequest.GetCurrentFullHost(),
                    forumpath.Trim('/') == string.Empty ? "" : forumpath.Trim('/') + "/",
                    callbackUrlParam
                    );
                var requestToken = context.GetRequestToken(callbackUrl);
                var authenticationUrl = context.GetAuthorizationUrl(requestToken, callbackUrl);
                Utils.WriteCookie("wysky_qzlogin", "requesttokensecret", requestToken.TokenSecret);
                System.Web.HttpContext.Current.Response.Redirect(authenticationUrl);
            }
            else
            {
                //验证后回传
                Callback();
            }
            #endregion
        }