コード例 #1
0
        public void ProcessRequest(HttpContext context)
        {
            //获取Authorization Code
            string usercancel = CYRequest.GetQueryString("usercancel", false);

            if (usercancel.Length == 0)
            {
                //通过Authorization Code获取Access Token
                string code          = CYRequest.GetQueryString("code", false);
                string grant_type    = "authorization_code";
                string client_id     = "100225329";
                string client_secret = "a7a94f5cf02c8b46bc40f3597f535e46";
                string state         = CYRequest.GetQueryString("state", false);
                string md5State      = ProvideCommon.MD5(state);
                string redirect_uri  = context.Server.UrlEncode(string.Format("http://game.dao50.com/Services/qqCallBack.ashx?ms={0}", md5State));
                string sQQTokenUrl   = string.Format("https://graph.qq.com/oauth2.0/token?grant_type={0}&client_id={1}&redirect_uri={2}&code={3}&client_secret={4}",
                                                     grant_type, client_id, redirect_uri, code, client_secret);
                string   sTokenReturn      = ProvideCommon.GetPageInfo(sQQTokenUrl);
                string[] sTokenReturnArray = sTokenReturn.Split('&');
                Dictionary <string, string> dTokenReturn = new Dictionary <string, string>();
                foreach (string i in sTokenReturnArray)
                {
                    string[] sParams = i.Split('=');
                    if (sParams.Length == 2)
                    {
                        dTokenReturn.Add(sParams[0], sParams[1]);
                    }
                }
                string sAccessToken = dTokenReturn["access_token"].ToString();//Access_Token的有效期默认是3个月
                //获取用户OpenID
                string sQQOpenIDUrl  = string.Format("https://graph.qq.com/oauth2.0/me?access_token={0}", sAccessToken);
                string sOpenIDReturn = ProvideCommon.GetPageInfo(sQQOpenIDUrl).Trim();
                string sOpenID       = ProvideCommon.getJsonValueC("openid", sOpenIDReturn);
                //context.Response.Write(string.Format("Retrun:{0};OpenID:{1}",sOpenIDReturn,sOpenID));
                //判断openid是否存在
                int iUserID = QQUserBLL.QQUserUseridSelByOpenID(sOpenID);
                if (iUserID < 1000)
                {
                    //不存在则注册
                }
                else
                {
                    //存在则新用户登陆
                }
            }
            else
            {
            }
        }
コード例 #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //获取Authorization Code
            string usercancel = CYRequest.GetQueryString("usercancel", false);

            if (usercancel.Length == 0)
            {
                //通过Authorization Code获取Access Token
                string code         = CYRequest.GetQueryString("code", false);
                string state        = CYRequest.GetQueryString("state", false);
                string sMD5State    = CYRequest.GetQueryString("ms", false);
                string sMD5StateVal = ProvideCommon.MD5(state);
                if (sMD5State == sMD5StateVal)
                {
                    string redirect_uri = Server.UrlEncode(string.Format("http://game.dao50.com/Services/qqCallBack.aspx?ms={0}", sMD5StateVal));
                    string sAccessToken = QQLogin.GetAccessToken(redirect_uri, code);
                    string sOpenID      = QQLogin.GetOpenID(sAccessToken);
                    //判断openid是否存在
                    int iUserID = QQUserBLL.QQUserUseridSelByOpenID(sOpenID);
                    if (iUserID < 1000)
                    {
                        string sNickName = QQLogin.GetNickName(sAccessToken, sOpenID);
                        string sAccount  = QQLogin.GetAccount(sNickName);
                        int    iType     = 3;
                        int    iUID      = UserBll.UserReg(sAccount, sOpenID, iType);
                        if (-1 == iUID)
                        {
                            Response.Write("<script>alert('注册失败,请重试!location.href='http://www.dao50.com/';')</script>");
                            return;
                        }
                        else if (iUID > 999)
                        {
                            UserInfo uiObject = new UserInfo();
                            uiObject.Credennum = "";
                            uiObject.Answer    = "";
                            uiObject.Email     = "";
                            uiObject.Name      = sNickName;
                            uiObject.question  = "";
                            uiObject.regip     = ProvideCommon.GetRealIP();
                            uiObject.uid       = iUID;
                            UserInfoBLL.UserInfoAdd(uiObject);
                            string sPageUrl = Request.Url.ToString();
                            QQUserBLL.QQUserAdd(iUID, sOpenID, sPageUrl);
                            LoginStateSet(sAccount, iUID, sPageUrl);
                            string sWUrl   = WebConfig.BaseConfig.sWUrl;
                            string sWWWUrl = string.Format("{0}/{1}?un={2}", sWUrl, "usercookie.aspx", sAccount);
                            string sKey    = ConfigurationManager.AppSettings["UserValKey"].ToString();
                            string sBBSUrl = DiscuzUserI.BBSLogin(sAccount, sOpenID, sKey);
                            string sJSUrl  = string.Format("<script src='{0}'></script><script src='{1}'></script>", sBBSUrl, sWWWUrl);
                            Response.Write(string.Format("{0}<script>alert('注册成功!');location.href='http://www.dao50.com/';</script>", sJSUrl));
                            return;
                        }
                    }
                    else
                    {
                        string sAccount = UserBll.AccountSel(iUserID).Trim();
                        int    iPoints  = UserPointsBLL.UPointAllSel(iUserID);
                        string sKey     = ConfigurationManager.AppSettings["UserValKey"].ToString();
                        string sUrl     = DiscuzUserI.BBSLogin(sAccount, sOpenID, sKey);
                        string sPageUrl = Request.Url.ToString();
                        LoginStateSet(sAccount, iUserID, sPageUrl);
                        string sCUrl  = WebConfig.BaseConfig.sWUrl;
                        string sJSUrl = string.Format("{0}/{1}?un={2}", sCUrl, "usercookie.aspx", sAccount);
                        Response.Write(string.Format("<script src='{0}'></script><script src='{1}'></script><script>location.href='{2}'</script>",
                                                     sUrl, sJSUrl, sCUrl));
                    }
                }
                else
                {
                    Response.Write("state err");
                }
            }
            else
            {
                Response.Write("<script>alert('登陆失败!location.href='http://www.dao50.com/';')</script>");
                return;
            }
        }