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 { } }
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; } }