public override OAuthUserInfo GetOAuthUserInfo() { if (!IsAuthorized) { return(null); } var ub = new UriBuilder("https://graph.qq.com/user/get_user_info"); ub.Query = string.Format("access_token={0}&oauth_consumer_key={1}&openid={2}", AccessToken, ClientId, UID); Dictionary <string, string> parameters = new Dictionary <string, string>(); parameters.Add("access_token", AccessToken); parameters.Add("oauth_consumer_key", ClientId); parameters.Add("openid", UID); HttpWebResponse response = HttpHelper.CreatePostHttpResponse("https://graph.qq.com/user/get_user_info", parameters); if (response.StatusCode != System.Net.HttpStatusCode.OK) { return(null); } using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string content = reader.ReadToEndAsync().Result; QQUserInfo qqUserinfo = JsonConvert.DeserializeObject <QQUserInfo>(content); return(new OAuthUserInfo() { AccessToken = AccessToken, Uid = UID, SystemType = OAuthSystemType.QQ, Name = qqUserinfo.nickname, ProfileImgUrl = qqUserinfo.figureurl_qq_2 }); } }
//4.获取用户信息 #region 获取用户基本信息 /// <summary> /// 获取用户基本信息 /// </summary> /// <returns>用户基本信息对象</returns> public QQUserInfo GetUserInfo() { try { QQUserInfo model = null; Dictionary <string, object> result = Conf.GetDictionary(UserBaseInfoUrl, Access_Token, Conf.QQ_Client_ID, Open_ID); if (result != null && result.Count > 0) { string ret = result["ret"].ToString(); //返回码 string msg = result["msg"].ToString(); //如果ret<0,会有相应的错误信息提示,返回数据全部用UTF-8编码 if (ret == "0") { model = new QQUserInfo() { NickName = result["nickname"].ToString(), FigureURL = result["figureurl"].ToString(), FigureURL_1 = result["figureurl_1"].ToString(), FigureURL_2 = result["figureurl_2"].ToString(), FigureURL_QQ_1 = result["figureurl_qq_1"].ToString(), FigureURL_QQ_2 = result["figureurl_qq_2"].ToString(), Gender = result["gender"].ToString(), Is_Yellow_VIP = result["is_yellow_vip"].ToString(), Yellow_VIP_Level = result["yellow_vip_level"].ToString(), Is_Yellow_Year_VIP = result["is_yellow_year_vip"].ToString() }; this.UserInfo = model; } } return(model); } catch (Exception ex) { throw ex; } }
public ActionResult CallBack() { string backState = Request.QueryString["state"]; string code = Request.QueryString["code"]; if (null != backState && null != code && null != Session["QQLoginState"] && backState == Session["QQLoginState"].ToString()) { Session["QQLoginState"] = null; //调获取AccessToken的接口 string access_token = QQLoginHelper.GetAccessToken(code); //调获取OpenID的接口 string openid = QQLoginHelper.GetOpenId(access_token); //调获取用户信息的接口 QQUserInfo qqUserInfo = QQLoginHelper.GetQQUserInfo(access_token, openid); Response.Cookies["is_lost"].Value = qqUserInfo.is_lost.ToString(); Response.Cookies["province"].Value = qqUserInfo.province; Response.Cookies["city"].Value = qqUserInfo.city; Response.Cookies["year"].Value = qqUserInfo.year; Response.Cookies["constellation"].Value = qqUserInfo.constellation; Response.Cookies["figureurl_qq"].Value = qqUserInfo.figureurl_qq; Response.Cookies["figureurl_type"].Value = qqUserInfo.figureurl_type; Response.Cookies["ret"].Value = qqUserInfo.ret.ToString(); Response.Cookies["msg"].Value = qqUserInfo.msg; Response.Cookies["nickname"].Value = qqUserInfo.nickname; Response.Cookies["figureurl"].Value = qqUserInfo.figureurl; Response.Cookies["figureurl_1"].Value = qqUserInfo.figureurl_1; Response.Cookies["figureurl_2"].Value = qqUserInfo.figureurl_2; Response.Cookies["figureurl_qq_1"].Value = qqUserInfo.figureurl_qq_1; Response.Cookies["figureurl_qq_2"].Value = qqUserInfo.figureurl_qq_2; Response.Cookies["gender"].Value = qqUserInfo.gender; Response.Cookies["is_yellow_vip"].Value = qqUserInfo.is_yellow_vip; Response.Cookies["vip"].Value = qqUserInfo.vip; Response.Cookies["yellow_vip_level"].Value = qqUserInfo.yellow_vip_level; Response.Cookies["level"].Value = qqUserInfo.level; Response.Cookies["figureurl_qq_1"].Value = qqUserInfo.is_yellow_year_vip; //if (qqUserInfo.ret == 0 && string.IsNullOrEmpty(qqUserInfo.msg)) //{ // Response.Cookies["nickname"].Value = qqUserInfo.nickname; //将值写入到客户端硬盘Cookie // Response.Cookies["nickname"].Expires = DateTime.Now.AddDays(7);//设置Cookie过期时间 //} //else //{ // //获取用户失败 // throw new ApplicationException(qqUserInfo.msg); //} if (Session["BeforeLoginUrl"] != null) { return(Redirect(Session["BeforeLoginUrl"].ToString())); //返回登陆之前的URL } else { throw new Exception("登录之前的路由丢失"); } } else { throw new Exception("登录State已丢失或不正确"); } }
public async Task <ActionResult> GetQQUserInfo([FromQuery] string accessToken)//分页面跳转可以多带一个参数 { string jsonResult = ""; Guid InfoId = Guid.Parse("00000000-0000-0000-0000-000000000000"); string email = ""; QQUserInfo qqUserInfo = new QQUserInfo(); User user = new User(); QQLogin login = new QQLogin(); string openId = login.GetOpenID(accessToken); qqUserInfo = login.GetQQUserInfo(accessToken, openId); if (qqUserInfo.Ret == 0 && string.IsNullOrWhiteSpace(qqUserInfo.Msg)) //成功 { user.UserPortrait = qqUserInfo.Figureurl_qq_1; user.UserName = qqUserInfo.Nickname; user.UserAccessToken = accessToken; user.UserOpenId = openId; user.UserId = new Guid(); if (await userService.AddEntityAsync(user)) { var userInfo = await userService.GetUserByOpenIdAsync(user.UserOpenId); InfoId = userInfo.UserId; email = userInfo.UserEmail; jsonResult = "登录成功!欢迎您:" + qqUserInfo.Nickname; } else { jsonResult = "登录成功!但是后台出了点问题,刷新重新试试吧!"; } } else //失败 { jsonResult = "登录失败!返回码:" + qqUserInfo.Ret; } return(Ok(new { msg = jsonResult, data = qqUserInfo, userId = InfoId, userEmail = email })); }
private void Req() { var qc = new QQConnet(); if (!qc.VerifyCallback()) { ShowErrMsg("参数缺少."); return; } Session["QzoneOauth"] = null; //数据令牌 string accessToken = qc.GetAccess_Token(); if (string.IsNullOrEmpty(accessToken)) { ShowErrMsg("Access_Token 为空"); return; } //唯一标识 Openid与QQ号一对一对应 string openid = qc.GetOpenid(accessToken); if (string.IsNullOrEmpty(openid)) { ShowErrMsg("Openid 为空"); return; } //获取当前登录用户 QQUserInfo user = qc.GetUserInfo(accessToken, openid); if (user != null) { int userid = viviapi.BLL.User.UserLoginByPartner.Instance.Exists(1, openid); if (userid == 0) { #region var info = new UserLoginByPartner { id = 0, available = 1, openid = openid, plant = 1, plantname = "QQ平台", userid = 0 }; bool init = viviapi.BLL.User.UserLoginByPartner.Instance.Insert(info) > 0; if (init) { Session["QzoneOauth"] = user; Response.Redirect("/appqqset.aspx?openid=" + openid, false); } else { ShowErrMsg("init.err"); } #endregion } else { string lastLoginIp = ServerVariables.TrueIP; string lastLoginAddress = WebUtility.GetIPAddress(lastLoginIp); string message = viviapi.BLL.User.Login.SignIn(1, openid, lastLoginIp, lastLoginAddress); if (message == "success") { Response.Redirect("/usermodule/account/index.aspx", false); } else { ShowErrMsg(message); } } } else { ShowErrMsg("登录失败 2."); } }
public ActionResult CallBack() { string backState = Request.QueryString["state"]; string code = Request.QueryString["code"]; if (null != backState && null != code && null != Session["QQLoginState"] && backState == Session["QQLoginState"].ToString()) { Session["QQLoginState"] = null; //调获取AccessToken的接口 string access_token = QQLoginHelper.GetAccessToken(code); //调获取OpenID的接口 string openid = QQLoginHelper.GetOpenId(access_token); //调获取用户信息的接口 QQUserInfo qqUserInfo = QQLoginHelper.GetQQUserInfo(access_token, openid); if (qqUserInfo.ret == 0 && string.IsNullOrEmpty(qqUserInfo.msg)) { QQUserModel userModel = service.GetByWhere("WHERE OpenId='" + openid + "'").FirstOrDefault(); if (userModel != null) { //更新QQ用户信息 userModel.NickName = qqUserInfo.nickname; userModel.Gender = qqUserInfo.gender == "男" ? 1 : 0; userModel.HeadShot = qqUserInfo.figureurl_qq; userModel.LastLogin = DateTime.Now; service.UpdateModel(userModel); } else { userModel = new QQUserModel(); //添加QQ用户 userModel.OpenId = openid; userModel.NickName = qqUserInfo.nickname; userModel.Gender = qqUserInfo.gender == "男"?1:0; userModel.HeadShot = qqUserInfo.figureurl_qq; userModel.Email = ""; userModel.Status = true; userModel.LastLogin = DateTime.Now; userModel.CreateOn = DateTime.Now; service.CreateModel(userModel); } Response.Cookies["openid"].Value = openid; Response.Cookies["openid"].Expires = DateTime.Now.AddDays(3); Response.Cookies["nickname"].Value = qqUserInfo.nickname; Response.Cookies["nickname"].Expires = DateTime.Now.AddDays(3); Response.Cookies["figureurl_qq"].Value = qqUserInfo.figureurl_qq; Response.Cookies["figureurl_qq"].Expires = DateTime.Now.AddDays(3); } else { //获取用户失败 throw new ApplicationException(qqUserInfo.msg); } if (Session["BeforeLoginUrl"] != null) { return(Redirect(Session["BeforeLoginUrl"].ToString())); //返回登陆之前的URL } else { throw new Exception("登录之前的路由丢失"); } } else { throw new Exception("登录State已丢失或不正确"); } }