/// <summary> /// 根据code获取UserID /// </summary> /// <param name="code"></param> /// <returns></returns> public string GetUserId(string code) { var token = AccessTokenContainer.GetTokenResult(workSetting.Value.LoginAccessTokenKey); var reObj = OAuth2Api.GetUserId(token.access_token, code); return(reObj.UserId); }
public string GetUserDataByCode(string strCode, string strModelCode) { string UserCode = ""; strModelCode = strModelCode.Split('_')[0]; try { if (Qyinfo.IsUseWX == "Y") { JH_Auth_Model Model = new JH_Auth_ModelB().GetEntities(d => d.ModelCode == strModelCode).FirstOrDefault(); if (Model != null) { GetUserInfoResult OBJ = OAuth2Api.GetUserId(GetToken(Model.AppID), strCode); UserCode = OBJ.UserId; } } } catch (Exception EX) { new JH_Auth_LogB().Insert(new JH_Auth_Log() { CRDate = DateTime.Now, LogContent = strModelCode + "获取用户代码" + strCode + "|GetUserDataByCode" + EX.Message.ToString() }); } return(UserCode); }
public ActionResult OAuth2(string corpid, string accesstoken, string reurl, string scope = "snsapi_base") { #region 校验 if (string.IsNullOrEmpty(reurl)) { LogWriter.Info(string.Format("qyid为“{0}”的OAuth2授权失败,原因:reurl为空", corpid)); return(Content("非法访问")); } var account = GetAccount(corpid); if (account == null) { LogWriter.Info(string.Format("qyid为“{0}”的OAuth2授权失败,原因:企业号不存在", corpid)); return(Content("非法访问")); } var passtoken = GetPassToken(account, accesstoken); if (passtoken == null) { LogWriter.Info(string.Format("qyid为“{0}”的OAuth2授权失败,原因:accesstoken错误", corpid)); return(Content("非法访问")); } if (!ValidateOauth2Domain(passtoken, Base64Helper.DecodeBase64(reurl.Replace(" ", "+")))) { LogWriter.Info(string.Format("qyid为“{0}”的OAuth2授权失败,原因:reurl{1}错误", corpid, reurl)); return(Content("非法访问")); } #endregion string CorpID = account.CorpID; var domain = Request.Url.Authority; var url = OAuth2Api.GetCode(CorpID, "http://" + domain + "/wechatservice/wxapi/OAuth2Callback?corpid=" + corpid + "&accesstoken=" + accesstoken + "&scope=" + scope + "&reurl=" + reurl, "JeffreySu", account.AgentId == null ? "" : account.AgentId.ToString(), scope: scope); return(Redirect(url)); }
public ActionResult GenerateAuthTokenFromCode(string code, long state) { OAuthResponse response = null; ViewResult result = new ViewResult(); try { OAuth2Api oAuth = new OAuth2Api(); response = oAuth.ExchangeCodeForAccessToken(OAuthEnvironment.PRODUCTION, code); authorizationManager.SetEbayAuth(response.AccessToken, response.RefreshToken, state); result.StatusCode = StatusCodes.Status200OK; result.ViewName = "AuthSuccess"; return(result); } catch (NotAuthorizedException ex) { telemetryClient.TrackException(ex, new Dictionary <string, string> { { "ErrorMessage", ex.Message } }); } catch (Exception ex) { telemetryClient.TrackException(ex, new Dictionary <string, string> { { "ErrorMessage", response?.ErrorMessage } }); } result.StatusCode = StatusCodes.Status500InternalServerError; result.ViewName = "AuthError"; return(result); }
public ActionResult Identify(string code) { if (string.IsNullOrEmpty(code)) { return(Redirect(OAuth2Api.GetCode(_corpId, AbsoluteUri(), "STATE", _agentId))); } WxIdentifyDto dto = HttpContext.Session.GetObjectFromJson <WxIdentifyDto>("WxIdentify"); if (dto == null) { LoginViewModel vm = new LoginViewModel() { ReturnUrl = AbsoluteUri() }; try { var accessToken = AccessTokenContainer.GetToken(_corpId, _secret); GetUserInfoResult userInfo = OAuth2Api.GetUserId(accessToken, code); vm.WorkerCn = userInfo.UserId; vm.DeviceId = userInfo.DeviceId; } catch { Logger.Error("微信授权错误"); } return(View("login", vm)); } else { return(View("TaskList", dto)); } }
public IActionResult OAuth(string code, string state) { var tokenResult = CommonApi.GetToken(WeixinOptions.CorpId, WeixinOptions.Secret); var openInfo = new Senparc.Weixin.QY.AdvancedAPIs.OAuth2.GetUserInfoResult(); try { openInfo = OAuth2Api.GetUserId(tokenResult.access_token, code); } catch (ErrorJsonResultException e) when(e.JsonResult.errcode == Senparc.Weixin.ReturnCode.合法的oauth_code) { ViewData["Message"] = Newtonsoft.Json.JsonConvert.SerializeObject(e.JsonResult, Newtonsoft.Json.Formatting.Indented); return(View()); } //catch (ArgumentNullException e) //{ // ViewData["Message"] = e.Message; // return View(); //} if (string.IsNullOrEmpty(openInfo.UserId)) { ViewData["Message"] = "非企业人员,考勤功能不可用!"; } else { //ViewData["Member"] = MailListApi.GetMember(tokenResult.access_token, openInfo.UserId); ViewData["DepartmentList"] = MailListApi.GetDepartmentList(tokenResult.access_token); } return(View()); }
public IActionResult Index(string returnUrl) { var redirectUrl = "http://" + HttpContext.Request.Host.Host + "/OAuth2/UserInfoCallback?returnUrl=" + returnUrl.UrlEncode(); var url = OAuth2Api.GetCode(_corpId, redirectUrl, "", _agentId); return(Redirect(url)); }
public ActionResult Login(string returnUrl, string code) { if (returnUrl == null) { return(null); } // 根据 returnUrl 得到 AppName, 然后得到_secret和_agentId string appName = _appDict[GetActionOfUrl(returnUrl)]; _secret = _appConfiguration[string.Format("SenparcWeixinSetting:{0}:Secret", appName)]; _agentId = _appConfiguration[string.Format("SenparcWeixinSetting:{0}:AgentId", appName)]; if (string.IsNullOrEmpty(code)) { // 备案 return(Redirect(OAuth2Api.GetCode(_corpId, AbsoluteUri(), "STATE", _agentId))); } var vm = new LoginViewModel() { ReturnUrl = returnUrl }; try { var accessToken = AccessTokenContainer.GetToken(_corpId, _secret); GetUserInfoResult userInfo = OAuth2Api.GetUserId(accessToken, code); vm.WorkerCn = userInfo.UserId; vm.DeviceId = userInfo.DeviceId; } catch { Logger.Error("微信登录错误"); } return(View(vm)); }
private async Task <EbayOAuthToken> RefreshUserToken(long companyId) { try { OAuth2Api oAuth = new OAuth2Api(); var refreshToken = await GetEbayRefreshTokenByCompanyId(companyId); if (refreshToken != null) { var newUserAccessToken = oAuth.GetAccessToken(OAuthEnvironment.PRODUCTION, refreshToken.Token, new List <string> { "https://api.ebay.com/oauth/api_scope/sell.inventory" }); var newUserToken = new EbayOAuthToken { Token = newUserAccessToken.AccessToken.Token, Expiration = newUserAccessToken.AccessToken.ExpiresOn.ToUniversalTime(), Type = EbayOAuthTokenType.USERTOKEN }; SetEbayTokenByCompanyId(companyId, newUserToken).Wait(); return(newUserToken); } throw new Exception("Refresh token was null!"); } catch (Exception ex) { telemetryClient.TrackException(ex); return(null); } }
public void ProcessRequest(HttpContext context) { if (!context.Request.IsAuthenticated) { LogManager.GetLogger(this.GetType()).Debug("UrlStart"); string strUrl = OAuth2Api.GetCode(CorpId, HttpUtility.UrlEncode(webUrl + strRet), HttpUtility.UrlEncode(context.Request.RawUrl)); LogManager.GetLogger(this.GetType()).Debug(strUrl); context.Response.Redirect(strUrl); return; } // 获取要请求的文件名 string filePath = context.Server.MapPath(context.Request.FilePath); // 用Fiddler查看响应头,如果看到有这个头,就表示是由这段代码处理的。 context.Response.AddHeader("SeesionExist", (context.Session != null ? "yes" : "no")); // 在这里,你可以访问context.Session // 设置响应内容标头 FileInfo fi = new FileInfo(filePath); var strName = fi.Name; context.Response.ContentType = MimeMapping.GetMimeMapping(strName); // 输出文件内容 context.Response.TransmitFile(filePath); }
public IActionResult Index(string returnUrl) { //string state = "Zodolabs-Asset-" + DateTime.Now.Millisecond; var redirectUrl = "http://" + HttpContext.Request.Host.Host + "/OAuth2/UserInfoCallback?returnUrl=" + returnUrl.UrlEncode(); var url = OAuth2Api.GetCode(_corpId, redirectUrl, "", _agentId); return(Redirect(url)); }
public ActionResult Oil(string code) { if (string.IsNullOrEmpty(code)) { return(Redirect(OAuth2Api.GetCode(_corpId, AbsoluteUri(), "STATE", _agentId))); } string workerCn = null; try { var accessToken = AccessTokenContainer.GetToken(_corpId, _secret); GetUserInfoResult userInfo = OAuth2Api.GetUserId(accessToken, code); workerCn = userInfo.UserId; } catch { Logger.Error("微信授权错误"); } if (workerCn == null) { return(Content("系统取不到你的微信标识号")); } //workerCn = "90005"; var worker = WorkManager.GetWorkerByCn(workerCn); if (!worker.WorkRoleNames.Contains("司机")) { return(Content("需要司机角色")); } var depot = WorkManager.GetDepot(worker.DepotId); var vm = new OilViewModel(); vm.WorkerId = worker.Id; foreach (var v in _vehicleCache.GetList().FindAll(x => x.DepotId == depot.Id)) { vm.Vehicles.Add(new ComboItemModel() { Id = v.Id, Name = v.Cn + v.License }); } foreach (var v in _gasStationCache.GetList().FindAll(x => string.IsNullOrEmpty(x.DepotList) || x.DepotList.Contains(depot.Name))) { vm.GasStations.Add(new ComboItemModel() { Id = v.Id, Name = v.Name }); } foreach (var t in _oilTypeCache.GetList()) { vm.OilTypes.Add(new ComboItemModel() { Id = t.Id, Name = t.Name }); } return(View(vm)); }
public ActionResult Authorize(string state, string scope) { if (SSOClient.IsLogin) { return(ToMenu(state)); } return(Redirect(OAuth2Api.GetCode(_corpId, _authorizeUrl, state, _agentid, _response_type, scope))); }
/// <summary> /// 微信网页授权 /// </summary> /// <param name="appcode">应用编码 默认为移动审批</param> /// <param name="returnUrl">返回url</param> /// <returns></returns> public ActionResult Authorize(string appcode = null, string returnUrl = null) { //默认移动审批应用 appcode = appcode ?? Constants.MOBILE_APPROVAL_TEST; returnUrl = returnUrl ?? Request.UrlReferrer?.ToString(); var redirectUrl = $"http://douhua.oicp.net/wechat/consumecode?appcode={appcode}&returnUrl={returnUrl}"; var target = OAuth2Api.GetCode(corpId, redirectUrl, "", ""); return(Redirect(target)); }
// GET: QYOAuth2 public ActionResult Index() { var state = "Wangkai-" + DateTime.Now.Millisecond; //随机数,用于识别请求可靠性 Session["State"] = state; //储存随机数到Session string code = OAuth2Api.GetCode(CorpId, "http://1p623v6690.iok.la/QYOAuth2/ShowContent", state, "code", "snsapi_base"); ViewData["UrlBase"] = code; return(View()); //https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx140262311b599a34&redirect_uri=http://mpwechatserver.chinacloudsites.cn/oauth2/QYBaseCallback&response_type=code&scope=snsapi_base&state=TJMicroPower#wechat_redirect }
public async Task <ActionResult> BackLogin() { string returnUrl = RequestUtility.UrlDecode(Request["state"]); //Session["ReturnUrl"] as string; try { LogManager.GetLogger(this.GetType()).Error("Entering BackLogin, returnUrl=" + returnUrl); //ViewBag.ReturnUrl = returnUrl; if (Request["code"] != null) { string code = Request["code"].ToString(); LogManager.GetLogger(this.GetType()).Debug("code:" + code); var Token = AccessTokenContainer.TryGetToken(CorpId, CorpSecret); LogManager.GetLogger(this.GetType()).Error("Token:" + Token); var code1 = OAuth2Api.GetUserId(Token, code); ////////Session["Username"] = code1.UserId; //////LogManager.GetLogger(this.GetType()).Debug("code1.UserId:" + code1.UserId); //////BaseService<WechatUser> ser = new BaseService<WechatUser>(); //////var objUser = ser.Entities.Where(a => a.WechatID == code1.UserId).FirstOrDefault(); //////LogManager.GetLogger(this.GetType()).Debug("objUser:"******"N" : "U")); //////if (objUser == null) //////{ ////// objUser = new WechatUser() { LillyID = code1.UserId, WechatID = code1.UserId, Id = 0, LanguageCode = ConstData.LAN_EN }; //////} //var user = UserManager.Entities.FirstOrDefault(a => a.UserName == code1.UserId); var user = new SysUser() { UserName = code1.UserId, Id = 0 }; await _authenticationService.SignInNoDB(user, true); return(Redirect(returnUrl)); ////////登录日志 //////BaseService<Logs> objServLogs = new BaseService<Logs>(); //////objServLogs.Insert(new Logs() { LogCate = "WechatLogin", LogContent = "登录成功", CreatedUserID = objUser.LillyID, CreatedUserName = objUser.LillyID }); } //LogManager.GetLogger(this.GetType()).Error("strUrl:" + strUrl); return(Redirect(returnUrl)); } catch (Exception ex) { LogManager.GetLogger(this.GetType()).Error(ex.Message, ex); return(Redirect("/notauthed.html")); } // View(); }
public IActionResult Index() { var memberResult = AppSessions.GetMember(); if (memberResult == null) { return(Redirect(OAuth2Api.GetCode(WeixinOptions.CorpId, "wx.pinhuadashi.com%2Fwxclock%2Foauth%3Freturnurl%3D%252Fwxclock%252Findex", "STATE"))); } return(View(memberResult)); }
public IActionResult 异常填报_Post(Wx异常说明 model) { if (model == null) { return(RedirectToAction(nameof(填报失败), "异常说明")); } var memberResult = AppSessions.GetMember(); if (memberResult == null) { return(Redirect(OAuth2Api.GetCode(WeixinOptions.CorpId, "wx.pinhuadashi.com%2Fwxclock%2Foauth%3Freturnurl%3D%252Fwxclock%252Findex", "STATE"))); } model.用户号 = memberResult.userid; model.姓名 = memberResult.name; if (!model.时间.HasValue || !model.类型.HasValue || string.IsNullOrEmpty(model.用户号)) { return(RedirectToAction(nameof(填报失败), "异常说明")); } var rtId = "148.1"; var rcId = pinhuaContext.GetNewRcId(); model.ExcelServerRtid = rtId; model.ExcelServerRcid = rcId; model.是否通知 = 0; model.是否处理 = 0; model.填报时间 = DateTime.Now; var repCase = new EsRepCase { RcId = rcId, RtId = rtId, LstFiller = 2, LstFillerName = memberResult.name, LstFillDate = DateTime.Now, FillDate = DateTime.Now, }; pinhuaContext.EsRepCase.Add(repCase); pinhuaContext.Wx异常说明.Add(model); var iRet = pinhuaContext.SaveChanges(); if (iRet > 0) { return(RedirectToAction(nameof(填报成功), "异常说明")); } else { return(RedirectToAction(nameof(填报失败), "异常说明")); } }
public ActionResult WeixinAddr(string type) { if (type == "GZH") //公众号 { return(Redirect(OAuthApi.GetAuthorizeUrl("wx806943202a75a124", "http%3A%2F%2Fbit.bitdao.cn%2Fauth%2Fweixingzhsignin", "1", OAuthScope.snsapi_base))); } else { return(Redirect(OAuth2Api.GetCode("wx806943202a75a124", "http%3A%2F%2Fbit.bitdao.cn%2Fauth%2Fweixinqyhsignin", "1", ""))); } }
public IActionResult Tab4() { var memberResult = AppSessions.GetMember(); if (memberResult == null) { return(Redirect(OAuth2Api.GetCode(WeixinOptions.CorpId, "wx.pinhuadashi.com%2Fwxclock%2Foauth%3Freturnurl%3D%252Fwxclock%252Findex", "STATE"))); } ViewData[nameof(GetDepartmentListResult)] = GetDepartmentList(); return(View(memberResult)); }
public ActionResult Callback() { var access_token = ""; var code = ""; try { code = Request.QueryString.Get("code"); if (string.IsNullOrEmpty(code))//没有code表示授权失败 { return(Content("请从正规途径进入")); } var state = Request.QueryString.Get("state"); var cache_status = System.Web.HttpContext.Current.Cache.Get(state); var redirect_url = cache_status == null ? "/" : cache_status.ToString();//没有获取到state,就跳转到首页 var scope = WeixinConfig.OauthScope; access_token = WeixinConfig.TokenHelper.GetToken();//基础支持中的access_token GetUserInfoResult UserInfo = OAuth2Api.GetUserId(access_token, code); string userId = UserInfo.UserId; string user_ticket = UserInfo.user_ticket; GetUserDetailResult userDetail = OAuth2Api.GetUserDetail(access_token, user_ticket); string userName = userDetail.name; AuthorizationManager.SetTicket(false, 1, userId, userName); Thread.Sleep(500);//暂停半秒钟,以等待IOS设置Cookies的延迟 LogWriter.Default.WriteInfo(string.Format("OAuth success: identity: {0} , name: {1} , redirect_rul:{2} ", code, userId, redirect_url)); EmployeeInfo employeeInfo = ms.EmployeeInfo.Find(userId); if (employeeInfo == null) { string insStr = "INSERT INTO EmployeeInfo ([EmployeeNo],[EmployeeName],[EmployeePhone]) " + "VALUES ('" + userId + "',N'" + userDetail.name + "','" + userDetail.mobile + "');"; BaseClass.OperateData(insStr); } else { string updStr = "UPDATE EmployeeInfo SET EmployeeName =N'" + userDetail.name + "',EmployeePhone= '" + userDetail.mobile + "' WHERE EmployeeNo = '" + userId + "'"; BaseClass.OperateData(updStr); } return(new RedirectResult(redirect_url, true)); } catch (Exception ex) { return(Content(ex.Message)); } }
public ActionResult WeixinQYHSignIn2(string code) { try { string userid = ""; string corpId = "wwa26d4508575b5fe9"; string secret = "cwcclxDJ0GMIlxsn2U_3kWQUPoiDupZOZMrKFqDDcnI"; if (string.IsNullOrEmpty(code)) { return(Json(new { code = 1, Msg = "参数错误" })); } WebClient wcl = new WebClient(); string url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}", corpId, secret); string json = wcl.DownloadString(url); JObject token = JObject.Parse(json.Replace("\\", ""));//可用属性请查看官方接入文档(access_token,expires_in,refresh_token,openid,scope,errcode,errmsg) if ((int)token["errcode"] != 0) { return(Json(new { Code = 1, Msg = "获取信息失败" })); } var access_token = (string)token["access_token"]; GetUserInfoResult result = OAuth2Api.GetUserId(access_token, code); if (result.errcode.ToString() == "请求成功") { userid = result.UserId; } else { return(Json(new { Code = 1, Msg = "获取信息失败:" + result.errmsg })); } SysUser user = dbContext.Set <SysUser>().Where(x => x.UserCode == userid).FirstOrDefault(); if (user == null) { return(Json(new { Code = 1, Msg = userid + "不存在!" })); } SSOClient.SignIn(user.UserId); return(Redirect("/pages/home/weixin.html")); } catch (Exception ex) { LogHelper.SaveLog(ex); return(Json(new { Code = 1, Msg = "服务器异常,请联系管理员!" })); } }
public IActionResult Index(string returnUrl) { // 设置自己的 URL var url = "https://4424-222-93-135-159.ngrok.io"; //此页面引导用户点击授权 var oauthUrl = OAuth2Api.GetCode(_corpId, $"{url}/OAuth2/BaseCallback?returnUrl={returnUrl.UrlEncode()}", null, null);//snsapi_base方式回调地址 ViewData["UrlBase"] = oauthUrl; ViewData["returnUrl"] = returnUrl; return(View()); }
public ActionResult ShowNoticeReg(string id) { string code = Request.QueryString["code"]; QYConfig.RegistWX(); var accessToken = AccessTokenContainer.GetToken(QYConfig.CorpId); GetUserIdResult user = OAuth2Api.GetUserId(accessToken, code, QYConfig.VoteAgenID); QYMemberBL member = QYMemberBL.GetMemberByWXID(user.UserId); NoticeBL n = NoticeBL.CreateNotice(id); if (n != null && member != null) { member.ReadNotice(id); } return(View(n)); }
public IActionResult OAuth(string code, string state, string returnUrl) { if (string.IsNullOrEmpty(code)) { ViewData["Message"] = "code值为空"; return(View()); } var tokenResult = CommonApi.GetToken(WeixinOptions.CorpId, WeixinOptions.Secret); if (!(tokenResult.errcode == Senparc.Weixin.ReturnCode_QY.请求成功)) { ViewData["Message"] = JsonConvert.SerializeObject(tokenResult); return(View()); } var userinfoResult = OAuth2Api.GetUserId(tokenResult.access_token, code); if (!(userinfoResult.errcode == Senparc.Weixin.ReturnCode_QY.请求成功)) { ViewData["Message"] = JsonConvert.SerializeObject(userinfoResult); return(View()); } if (string.IsNullOrEmpty(userinfoResult.UserId)) { ViewData["Message"] = "非企业人员,考勤功能不可用!"; return(View()); } var memberResult = MailListApi.GetMember(tokenResult.access_token, userinfoResult.UserId); if (memberResult.errcode == Senparc.Weixin.ReturnCode_QY.请求成功) { if (string.IsNullOrEmpty(returnUrl)) { return(View()); } else { AppSessions.SetMember(memberResult); return(RedirectToAction(nameof(Index))); } } return(View()); }
/// <summary> /// 获取用户信息; /// 微信会进行2次回调,1次断开 /// </summary> /// <param name="code"></param> /// <returns></returns> public GetUserInfoResult GetUserOpenIdByCode(string code) { GetUserInfoResult value = null; bool result = map.TryGetValue(code, out value); if (result) { // map.Remove(code); return(value); } else { value = OAuth2Api.GetUserId(AccessTokenOrAppKey, code); map[code] = value; return(value); } }
public async Task <GenerateUserAuthorizationUrlResponse> GenerateUserAuthorizationUrlAsync(long companyId) { try { OAuth2Api oAuth = new OAuth2Api(); string url = oAuth.GenerateUserAuthorizationUrl(OAuthEnvironment.PRODUCTION, new string[] { "https://api.ebay.com/oauth/api_scope/sell.inventory" }, companyId.ToString()); return(await Task.FromResult <GenerateUserAuthorizationUrlResponse>(new GenerateUserAuthorizationUrlResponse { IsSuccess = true, URL = url })); } catch (Exception ex) { telemetryClient.TrackException(ex); return(new GenerateUserAuthorizationUrlResponse { IsSuccess = false, ErrorMessage = ex.Message }); } }
public void PassWordBasedGetDataReturnsData() { var consumerKey = "gz6BEIMXHlMH8aCY9n1uJyAFFwiTlUJX"; var consumerSecret = "Twx5nyR4hP3s0GTm"; var userName = "******"; var userPassword = "******"; var authApi = new OAuth2Api(consumerKey, consumerSecret); var response = authApi.DirectLogin(userName, userPassword); var AccessToken = response.access_token; var jobData = new GoToMeetingCrawlJobData(); jobData.AccessToken = AccessToken; _sut.GetData(jobData) .ShouldNotBeNull(); }
public ActionResult RedirectBack(string code, string state) { if (string.IsNullOrEmpty(code)) { throw new ArgumentException("code参数错误"); } if (!string.Equals(state, State)) { throw new ArgumentException("state参数错误"); } string token = AccessTokenContainer.TryGetToken(CorpId, AppSecret); var result = OAuth2Api.GetUserId(token, code); return(Json(result, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 消费临时code 换取微信应用信息 /// </summary> /// <param name="code">临时授权码code</param> /// <param name="appcode">应用code</param> /// <param name="returnUrl">返回url</param> /// <returns></returns> public ActionResult ConsumeCode(string code, string appcode, string returnUrl = null) { try { User user = null; if (string.IsNullOrEmpty(appcode)) { throw new ArgumentNullException(nameof(appcode)); } var app = _currentService.GetApp(appcode); var accessToken = AccessTokenContainer.GetToken(corpId, app.SecretValue); var result = OAuth2Api.GetUserId(accessToken, code); if (!string.IsNullOrEmpty(result.OpenId)) { //成员未关注该企业微信 throw new Exception("成员未关注该企业微信"); } else if (!string.IsNullOrEmpty(result.UserId)) { //通过企业微信usesrid 换 业务系统账号密码 user = _accountService.FindUserByWxUserID(result.UserId); if (user == null) { //微信用户未绑定对应业务系统账号 return(RedirectToAction("login", "account", new { returnUrl, appcode, workUserId = result.UserId })); } else { var nonceStr = Guid.NewGuid().ToString().Replace("-", ""); LocalCacheManager.Add(nonceStr, user); //微信网页授权成功 准备获取企业应用授权 return(RedirectToAction("worklogin", "account", new { nonce = nonceStr, appcode, returnUrl })); } } else { throw new Exception(result.errmsg); } } catch (Exception ex) { return(RedirectToAction("error", "home", new { errmsg = ex.Message, appcode })); } }