private void oAuth_TQQ() { IQoAuth oAuthService = new QoAuthService(); QoAuthKey oAuthKey = null; string requestTokenUrl = oAuthService.GetAuthorizationUrl(out oAuthKey); //用于获取access_token //Session[sKey_QQoAuthKey] = oAuthKey; CookieHelper.Set(sKey_QQoAuthKey, SecurityHelper.EncryptObject(oAuthKey), DateTime.Now.AddHours(1)); Response.Redirect(requestTokenUrl, true); }
/// <summary> /// 绑定社交账号后的回调函数,使用场景 /// 1.直接采用社交账号登陆 /// 2.平台账号登陆后->绑定新的社交账号 /// </summary> public ActionResult Social_Callback(string type) { SocialState ssResponse = new SocialState(); try { //判断登陆的社交账户类型(默认为新浪微博账号) String req_type = (String.IsNullOrEmpty(type)) ? "1" : type; SocialUserTypeEnum socialUserTypeEnum = (SocialUserTypeEnum)Enum.Parse(typeof(SocialUserTypeEnum), req_type); //初始化社交账户结构体 SocialUser socialUser = new SocialUser(); socialUser.SocialUserType = socialUserTypeEnum; #region 获取社交账号的access_token及security_key switch (socialUserTypeEnum) { case SocialUserTypeEnum.Sina: ISinaoAuth sina_oAuthService = new SinaOAuthService(); string _code = Request["code"]; string access_code = string.Empty; string sina_uid = string.Empty; bool _isOk = sina_oAuthService.GetAccessToken(_code, out access_code, out sina_uid); socialUser.AccessToken = access_code; socialUser.Uid = sina_uid; ssResponse.SocialType = "新浪微博"; break; case SocialUserTypeEnum.QQ: IQoAuth oAuthService = new QoAuthService(); string verifierCode = Request["code"]; //QoAuthKey oAuthKey = (QoAuthKey)Session[sKey_QQoAuthKey]; QoAuthKey oAuthKey = SecurityHelper.DecryptObject <QoAuthKey>(CookieHelper.Get(sKey_QQoAuthKey), null); oAuthService.GetAccessToken(verifierCode, ref oAuthKey); socialUser.AccessToken = oAuthKey.Access_Token; socialUser.AccessTokenSecret = oAuthKey.State; socialUser.Uid = oAuthKey.OpenId; ssResponse.SocialType = "QQ"; break; default: break; } #endregion //Session[sKey_SocialUserKey] = socialUser; CookieHelper.Set(sKey_SocialUserKey, SecurityHelper.EncryptObject(socialUser), DateTime.Now.AddHours(1)); //用户业务逻辑服务 #region 社交账号登陆 //社交账号登陆 if (socialUserTypeEnum == SocialUserTypeEnum.QQ || socialUserTypeEnum == SocialUserTypeEnum.Sina) { //检查社交账号是否和平台账号绑定 UserServiceClient client = new UserServiceClient(); AdvancedResult <string> result = client.IsBindSocialUser(socialUser); ssResponse.Logined = true; if (result.Error == AppError.ERROR_SUCCESS) { //跳转到个人中心 AdvancedResult <AdUser> aduser = client.GetUserInfo(result.Data); ssResponse.Binded = true; if (aduser.Error == AppError.ERROR_SUCCESS) { WriteAuthCookie(aduser.Data.UserAccount, result.Data); Response.AddHeader("P3P", "CP=CAO PSA OUR"); ssResponse.Name = aduser.Data.UserAccount; } CookieHelper.Remove(sKey_SocialUserKey); } else { //提示绑定 ssResponse.Binded = false; } client.Close(); client = null; } else { ssResponse.Logined = false; } #endregion } catch (Exception ex) { ssResponse.Logined = false; ssResponse.Message = ex.Message; } ViewBag.LoginResponse = JsonHelper.Serialize(ssResponse); return(View("~/Views/Account/socialcallback.cshtml")); }