/// <summary> /// 授权 /// </summary> /// <param name="AuthData"></param> /// <returns></returns> public ActionResult SponsorOAuth(string AuthData, string AppId) { //会自动解码,所以再次进行编码 AuthData = HttpUtility.UrlEncode(AuthData, System.Text.Encoding.UTF8); bool AuthState = false; string ErrMsg = string.Empty; //缓存的键值 string MarkKey = StringTool.GetMD5(AuthData).ToUpper(); //获取授权的地址 string RedirectUrl = Request.Url.Scheme + "://" + Request.Url.Authority + "/WeChatAuthorization/OAuthCallBack?MarkKey=" + MarkKey; //进行解密 var AuthDataModel = new { SessionKey = "", //授权完毕保存到session的键名 AuthDataParam = "AuthData", //授权信息传递的参数名称 AppId = "", IsBase = true, //是否是基础信息true表示只获取openid(隐士授权) false表示显示授权,可以获取用户的信息 RedirectUrl = "" }; try { AuthDataModel = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(Tools.DESEncryptTool.Decode(AuthData, Tools.StringTool.GetMD5(AppId).ToUpper()), AuthDataModel); if (AppId == AuthDataModel.AppId && !string.IsNullOrEmpty(AuthDataModel.RedirectUrl) && !string.IsNullOrEmpty(AuthDataModel.AppId)) { //将授权的信息保存在缓存中2分钟 HttpContext.Cache.Insert(MarkKey, AuthDataModel, null, DateTime.UtcNow.AddMinutes(2), TimeSpan.Zero); string AuthUrl = string.Empty; if (AuthDataModel.IsBase) { //只获取openid AuthUrl = new UserAuthorization().GetOpenIDAuthorizeUrl(AuthDataModel.AppId, RedirectUrl, MarkKey); } else { AuthUrl = new UserAuthorization().GetUserInfoAuthorizeUrl(AuthDataModel.AppId, RedirectUrl, MarkKey); } AuthState = true; return(new RedirectResult(AuthUrl)); } else { //授权信息错误! ErrMsg = "授权信息错误"; } } catch (Exception ex) { //授权信息错误 ErrMsg = "授权信息错误:" + ex.Message; } ViewBag.AuthState = AuthState; ViewBag.ErrMsg = ErrMsg; return(View()); }