public ActionResult LogOnByQQCallback(string oauth_token, string oauth_vericode)
        {
            if (oauth_token != null && oauth_vericode != null && Session["requesttokensecret"] != null)
            {
                var            requestTokenSecret = Session["requesttokensecret"].ToString();
                QzoneSDK.Qzone qzone    = new QzoneSDK.Qzone(key, secret, oauth_token, requestTokenSecret, oauth_vericode);
                ShortUserInfo  userinfo = Users.GetUserInfoByQqOpenid(qzone.OpenID);
                if (userinfo != null)
                {
                    FormsAuthentication.SetAuthCookie(userinfo.Username, true);
                    Response.Write("<script type=\"text/javascript\">window.opener.location.reload();window.close();</script>");
                    return(View());
                }

                var currentUser = qzone.GetCurrentUser();
                //Response.Write(currentUser);
                var user = (BasicProfile)JsonConvert.DeserializeObject(currentUser, typeof(BasicProfile));
                if (null != user)
                {
                    userinfo            = new ShortUserInfo();
                    userinfo.Username   = user.Nickname;
                    Session["qqopenid"] = qzone.OpenID;

                    //Response.Write("<br />" + user.Nickname + "<br />" + qzone.OpenID);
                    return(View(userinfo));
                }
            }
            return(RedirectToAction("LogOn", "Account"));
        }
Beispiel #2
0
        private void GetUserInfo()
        {
            if (Request.QueryString["oauth_vericode"] != null)
            {
                var requestTokenKey = Session["requesttokenkey"].ToString();
                var requestTokenSecret = Session["requesttokensecret"].ToString();
                var verifier = Request.QueryString["oauth_vericode"];
                string key = ConfigurationManager.AppSettings["ConsumerKey"];
                string secret = ConfigurationManager.AppSettings["ConsumerSecret"];
                QzoneSDK.Qzone qzone = new QzoneSDK.Qzone(key, secret, requestTokenKey, requestTokenSecret, verifier);

                //这里需要将qzone.OAuthTokenKey, qzone.OAuthTokenSecret, qzone.OpenID 存储起来用于后面的API的访问
                QzoneSDK.Qzone qzone2 = new QzoneSDK.Qzone(key, secret, qzone.OAuthTokenKey, qzone.OAuthTokenSecret, string.Empty, true, qzone.OpenID);
                Session["qzonesdk"] = qzone2;

                //qzone2 = Session["qzonesdk"] as QzoneSDK.Qzone;
                var currentUser = qzone2.GetCurrentUser();
                this.result.Text = currentUser;
                //var user = (BasicProfile)JsonConvert.Import(typeof(BasicProfile), currentUser);
                //if (null != currentUser)
                //{
                //this.result.Text = "成功登陆";
                //this.Nickname.Text = user.Nickname;
                //this.Figureurl.Text = user.Figureurl;
                //this.lbMoreInfo.Text="User's Msg:"+user.Msg+"User's Ret:"+user.Ret.ToString();
                //Image1.ImageUrl=user.Figureurl;
                //var list = Database.Instance.QzoneOauth.Where(x => x.OpenId == qzone2.OpenID).ToList();
                //if (list.Count > 0)
                //{
                //    QzoneOauth model = list[0];
                //    var newCookie = new HttpCookie("MemberID", model.UserId.ToString());
                //    newCookie.Expires = DateTime.Now.AddDays(10);
                //    Response.AppendCookie(newCookie);
                //    Session["QzoneOauth"] = model;
                //}
                //else
                //{
                //    User member = new User();
                //    member.Login = user.Nickname;
                //    member.Password = "******".Hash();
                //    member.ID = Guid.NewGuid();
                //    Database.Instance.InsertUser(member);
                //    QzoneOauth oauth = new QzoneOauth()
                //    {
                //        AccessTokenKey = qzone2.OAuthTokenKey,
                //        AccessTokenSecret = qzone2.OAuthTokenSecret,
                //        OpenId = qzone2.OpenID,
                //        ID = Guid.NewGuid(),
                //        UserId = member.ID,
                //    };
                //    Database.Instance.InsertQzoneOauth(oauth);
                //    var newCookie = new HttpCookie("MemberID", member.ID.ToString());
                //    newCookie.Expires = DateTime.Now.AddDays(10);
                //    Response.AppendCookie(newCookie);
                //    Session["QzoneOauth"] = oauth;
                //}
                //}
            }
        }
Beispiel #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.QueryString["oauth_vericode"] != null)
            {
                var requestTokenKey = Session["requesttokenkey"].ToString();
                var requestTokenSecret = Session["requesttokensecret"].ToString();
                var verifier = Request.QueryString["oauth_vericode"];
                string key = ConfigurationManager.AppSettings["ConsumerKey"];
                string secret = ConfigurationManager.AppSettings["ConsumerSecret"];
                QzoneSDK.Qzone qzone = new QzoneSDK.Qzone(key, secret, requestTokenKey, requestTokenSecret, verifier);

                //这里需要将qzone.OAuthTokenKey, qzone.OAuthTokenSecret, qzone.OpenID 存储起来用于后面的API的访问
                QzoneSDK.Qzone qzone2 = new QzoneSDK.Qzone(key, secret, qzone.OAuthTokenKey, qzone.OAuthTokenSecret, string.Empty, true, qzone.OpenID);
                Session["qzonesdk"] = qzone2;

                qzone2 = Session["qzonesdk"] as QzoneSDK.Qzone;
                var currentUser = qzone2.GetCurrentUser();

                var user = (BasicProfile)JsonConvert.Import(typeof(BasicProfile), currentUser);
                if (null != user)
                {
                    this.result.Text = "成功登陆";
                    this.Nickname.Text = user.Nickname;
                    this.Figureurl.Text = user.Figureurl;
                    var list = Database.Instance.QzoneOauth.Where(x => x.OpenId == qzone2.OpenID).ToList();
                    if (list.Count > 0)
                    {
                        QzoneOauth model = list[0];
                        var newCookie = new HttpCookie("MemberID", model.UserId.ToString());
                        newCookie.Expires = DateTime.Now.AddDays(10);
                        Response.AppendCookie(newCookie);
                        Session["QzoneOauth"] = model;
                    }
                    else
                    {
                        User member = new User();
                        member.Login = user.Nickname;
                        member.Password = "******".Hash();
                        member.ID = Guid.NewGuid();
                        Database.Instance.InsertUser(member);
                        QzoneOauth oauth = new QzoneOauth()
                        {
                            AccessTokenKey = qzone2.OAuthTokenKey,
                            AccessTokenSecret = qzone2.OAuthTokenSecret,
                            OpenId = qzone2.OpenID,
                            ID = Guid.NewGuid(),
                            UserId = member.ID,
                        };
                        Database.Instance.InsertQzoneOauth(oauth);
                        var newCookie = new HttpCookie("MemberID", member.ID.ToString());
                        newCookie.Expires = DateTime.Now.AddDays(10);
                        Response.AppendCookie(newCookie);
                        Session["QzoneOauth"] = oauth;
                    }
                }

            }
        }
        public ActionResult OnLoginQZone(FormCollection collection)
        {
            if (Request.QueryString["oauth_vericode"] != null)
            {
                var requestTokenKey = Session["requestTokenKey"].ToString();
                var requestTokenSecret = Session["requestTokenSecret"].ToString();
                var verifier = Request.QueryString["oauth_vericode"];
                string key = ConfigurationManager.AppSettings["ConsumerKey"];
                string secret = ConfigurationManager.AppSettings["ConsumerSecret"];
                QzoneSDK.Qzone qzone = new QzoneSDK.Qzone(key, secret, requestTokenKey, requestTokenSecret, verifier);
                var access = qzone.OAuthTokenKey;

                var currentUser = qzone.GetCurrentUser();
                //var user = (QzoneSDK.Models.BasicProfile)JsonConvert(typeof(QzoneSDK.Models.BasicProfile), currentUser);
            }

            return View();
        }
Beispiel #5
0
        void Callback()
        {
            //创建用户
            if (DNTRequest.GetInt("createuser", 0) == 1)
            {
                username = DNTRequest.GetString("username");
                email = DNTRequest.GetString("email");
                string qqopenid = Utils.GetCookie("wysky_qzlogin", "qqopenid");
                CreateUser(username, email, qqopenid);
                return;
            }
            else
            {
                string oauth_token = DNTRequest.GetString("oauth_token");
                string oauth_vericode = DNTRequest.GetString("oauth_vericode");
                string requestTokenSecret = Utils.GetCookie("wysky_qzlogin", "requesttokensecret");
                if (oauth_token == string.Empty || oauth_vericode == string.Empty || requestTokenSecret == string.Empty)
                {
                    pagetitle = "发生错误";
                    wysky_page_msg = "<script type=\"text/javascript\">alert('模块参数有空值,请回到登录页面重新登录!');window.opener.location.href='login.aspx';window.close();</script>";
                    return;
                }

                QzoneSDK.Qzone qzone = new QzoneSDK.Qzone(qzlConfig.AppId, qzlConfig.AppKey, oauth_token, requestTokenSecret, oauth_vericode);

                if (DNTRequest.GetInt("bind", 0) > 0)
                {
                    //要求登录
                    if (userid < 0)
                    {
                        pagetitle = "请先登录论坛才能绑定/解绑 QQ 帐号!";
                        wysky_page_msg = "<script type=\"text/javascript\">alert('请先登录论坛才能绑定/解绑 QQ 帐号!');window.opener.location.href='login.aspx';window.close();</script>";
                        return;
                    }

                    //开始绑定
                    if (DNTRequest.GetInt("bind", 0) == 1)
                    {
                        int usedUid = BLL.Main.GetUIDByQqOpenid(qzone.OpenID);
                        if (usedUid > 0)
                        {
                            ShortUserInfo usedUserInfo = Users.GetShortUserInfo(usedUid);
                            pagetitle = "你的 QQ 帐号已经绑定过别的论坛帐号";
                            wysky_page_msg = string.Format(
                                "<script type=\"text/javascript\">alert('你的 QQ 帐号已经绑定过别的论坛帐号{0}。如果想要绑定在当前帐号下,请先登录{0},取消之前的绑定!');window.opener.location.href='login.aspx';window.close();</script>",
                                usedUserInfo.Username
                                );
                            return;
                        }
                        //清理历史记录
                        BLL.Main.DeleteQqLoginInfo(qzone.OpenID, userid);
                        BLL.Main.CreateQqUserInfo(qzone.OpenID, userid);
                        pagetitle = "绑定成功";
                        wysky_page_msg = "<script type=\"text/javascript\">alert('绑定 QQ 帐号成功!');window.opener.location.reload();window.close();</script>";
                        return;
                    }
                    return;
                }

                userid = BLL.Main.GetUIDByQqOpenid(qzone.OpenID);
                if (userid != -1)
                {
                    UserCredits.UpdateUserCredits(userid);
                    ForumUtils.WriteUserCookie(userid, -1, config.Passwordkey);
                    OnlineUsers.UpdateAction(olid, UserAction.Register.ActionID, 0, config.Onlinetimeout);

                    pagetitle = "登录成功";
                    wysky_page_msg = "<script type=\"text/javascript\">window.opener.location.reload();window.close();</script>";
                    return;
                }
                else
                {
                    var currentUser = qzone.GetCurrentUser();
                    var user = (QzoneLoginInfo)Newtonsoft.Json.JavaScriptConvert.DeserializeObject(currentUser, typeof(QzoneLoginInfo));
                    if (null != user)
                    {
                        username = user.nickname;
                        Utils.WriteCookie("wysky_qzlogin", "qqopenid", qzone.OpenID);
                    }
                }
            }
        }