Пример #1
0
        /// <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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 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));
 }
Пример #4
0
        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);
        }
Пример #5
0
        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));
            }
        }
Пример #6
0
        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());
        }
Пример #7
0
        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));
        }
Пример #8
0
        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));
        }
Пример #9
0
        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);
            }
        }
Пример #10
0
        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);
        }
Пример #11
0
        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));
        }
Пример #12
0
        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)));
        }
Пример #14
0
        /// <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));
        }
Пример #15
0
        // 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
        }
Пример #16
0
        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();
        }
Пример #17
0
        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));
        }
Пример #18
0
        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", "")));
     }
 }
Пример #20
0
        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));
        }
Пример #21
0
        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 = "服务器异常,请联系管理员!" }));
            }
        }
Пример #23
0
        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());
        }
Пример #24
0
        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));
        }
Пример #25
0
        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());
        }
Пример #26
0
        /// <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);
            }
        }
Пример #27
0
 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
         });
     }
 }
Пример #28
0
        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();
        }
Пример #29
0
        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));
        }
Пример #30
0
 /// <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 }));
     }
 }