public ActionResult Index() { WechatConfig config = AccessTokenService.GetWechatConfig(); ViewData["config"] = config; return(View()); }
public async Task <IActionResult> Refresh([FromBody] RefreshRequestModel refreshRequest) { var principal = AccessTokenService.GetPrincipalFromExpiredToken(refreshRequest.Token); var userId = principal.Identity.Name; var savedRefreshToken = await AccessTokenService.GetRefreshTokenAsync(userId); if (savedRefreshToken != refreshRequest.RefreshToken) { return(BadRequest("Invalid refresh token")); } string newJwtToken = null; string newRefreshToken = null; try { newJwtToken = AccessTokenService.GenerateAccessToken(userId); newRefreshToken = AccessTokenService.GenerateRefreshToken(); await AccessTokenService.DeleteRefreshTokenAsync(userId, refreshRequest.RefreshToken); await AccessTokenService.SaveRefreshTokenAsync(userId, newRefreshToken); } catch (Exception e) { Logger.LogError(e, e.Message); return(StatusCode(500)); } return(Ok(new { token = newJwtToken, refreshToken = newRefreshToken })); }
public async void SaveRefreshTokenAsync_ShouldSaveRefreshTokenInDatabase() { var loggerMock = new Mock <ILogger <AccessTokenService> >(); var optionsMock = new Mock <IOptions <AppSettings> >(); var appSettingsMock = new Mock <AppSettings>(); var contextMock = new Mock <IDatabaseContext>(); optionsMock.Setup(x => x.Value) .Returns(appSettingsMock.Object); var dbSet = new TestDbSet <RefreshToken>(); contextMock.Setup(x => x.RefreshTokens) .Returns(dbSet); contextMock.Setup(x => x.SaveChangesAsync(It.IsAny <CancellationToken>())) .Verifiable(); var service = new AccessTokenService(loggerMock.Object, contextMock.Object, optionsMock.Object); var refreshToken = GetRefreshTokenSample(); await service.SaveRefreshTokenAsync(refreshToken.UserId.ToString(), refreshToken.Token); Assert.Contains(dbSet, x => x.Token == refreshToken.Token && x.UserId == refreshToken.UserId); contextMock.Verify(x => x.SaveChangesAsync(It.IsAny <CancellationToken>())); }
public ApiAuthenticationStateProvider( HttpClient httpClient, AccessTokenService accessTokenService) { _httpClient = httpClient; _accessTokenService = accessTokenService; }
public void AccessToken_AddAnAccessToken_ShouldAddCorrectly() { var data = new List <AccessToken>().AsQueryable(); var mock = new Mock <DbSet <AccessToken> >(); var mockContext = new Mock <Models.Models.Database>(); mockContext.Setup(m => m.AccessTokens).Returns(mock.Object); AccessTokenService accTokService = new AccessTokenService(mockContext.Object); AccessToken accToken = new AccessToken() { Device = new Device() { Id = Guid.NewGuid(), LastRequestDateTime = DateTime.Now }, UniqueAccesToken = Guid.NewGuid().ToString("D"), CreatedDateTime = DateTime.Now }; accTokService.AddAccessToken(accToken); mock.Verify(m => m.Add(It.IsAny <AccessToken>()), Times.Once()); mockContext.Verify(m => m.SaveChanges(), Times.Once()); }
public static async Task <string> GetFolderId([ActivityTrigger] RequestData requestData, TraceWriter log) { httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token); var response = await httpClient.GetAsync($"https://graph.microsoft.com/v1.0/users/{requestData.UserId}/mailFolders?$filter=displayName eq 'Conversation History'&$select=id"); if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized) { token = await AccessTokenService.FetchToken(); httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token); response = await httpClient.GetAsync($"https://graph.microsoft.com/v1.0/users/{requestData.UserId}/mailFolders?$filter=displayName eq 'Conversation History'&$select=id"); } response.EnsureSuccessStatusCode(); var responseData = JsonConvert.DeserializeObject <ResponseData>(await response.Content.ReadAsStringAsync()); if (responseData.Value.Length == 1) { return(responseData.Value[0].id); } else { response = await httpClient.GetAsync($"https://graph.microsoft.com/v1.0/users/{requestData.UserId}/mailFolders?$filter=displayName eq '会話の履歴'&$select=id"); response.EnsureSuccessStatusCode(); responseData = JsonConvert.DeserializeObject <ResponseData>(await response.Content.ReadAsStringAsync()); return(responseData.Value[0].id); } }
public ActionResult Index() { AccessTokenService service = new AccessTokenService(); service.UpdateToken(); return View(); }
// // GET: /Test/ public ActionResult Index() { MenuInfo menu = new MenuInfo("开始训练", MenuInfo.ButtonType.view, "http://wx.zzd123.com/wechat/Calendar"); MenuInfo menu2 = new MenuInfo("免费体验", new MenuInfo[] { new MenuInfo("免费行为测评", MenuInfo.ButtonType.view, "http://wx.zzd123.com/Free/FreeScale"), new MenuInfo("免费心理服务", MenuInfo.ButtonType.view, "http://wx.zzd123.com/Free/FreeHeartList") }); // MenuInfo menu2 = new MenuInfo("行为测评", MenuInfo.ButtonType.view, "http://www.sina.com"); //MenuInfo relatedInfo = new MenuInfo("相关链接", new MenuInfo[] { // new MenuInfo("公司介绍", MenuInfo.ButtonType.click, "Event_Company"), // new MenuInfo("官方网站", MenuInfo.ButtonType.view, "http://www.iqidi.com"), // new MenuInfo("提点建议", MenuInfo.ButtonType.click, "Event_Suggestion"), // new MenuInfo("联系客服", MenuInfo.ButtonType.click, "Event_Contact"), // new MenuInfo("发邮件", MenuInfo.ButtonType.view, "http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=S31yfX15fn8LOjplKCQm") //}); MenuJson menujson = new MenuJson(); menujson.button.AddRange(new MenuInfo[] { menu, menu2 }); string token = AccessTokenService.GetAccessToken(); string postData = JsonConvert.SerializeObject(menujson); ViewBag.x = WechatService.wechatApi("CreateMenu", token, postData); return(View()); }
public async Task ServiceDetailsServiceGetServiceDetailsCallsStaffClient() { var sid = "012345678901234"; var cat = Guid.NewGuid().ToString(); var dat = Guid.NewGuid().ToString(); var restRequest = new ServiceRequest { ServiceId = sid, AccessToken = cat, }; var config = A.Fake <IConfiguration>(); config["ClientAccessToken"] = cat; config["DarwinStaffAccessToken"] = dat; var tokenService = new AccessTokenService(A.Fake <ILogger <AccessTokenService> >(), config); var client = A.Fake <LDBServiceSoap>(); var staffClient = A.Fake <OpenLDBSVWS.LDBSVServiceSoap>(); var service = new ServiceDetailsService( A.Fake <ILogger <ServiceDetailsService> >(), tokenService, client, staffClient); await service.GetServiceDetailsAsync(restRequest); A.CallTo(() => staffClient.GetServiceDetailsByRIDAsync( A <OpenLDBSVWS.GetServiceDetailsByRIDRequest> .That.Matches(s => s.AccessToken.TokenValue == dat && s.rid == sid))) .MustHaveHappenedOnceExactly(); }
private static AccessTokenService CreateTarget( IOptions <AuthOptions> optionsAccessor = null, IAccessTokenRepository tokenRepository = null, IGitHubUserModelService gitHubUserModelService = null, IHttpContextAccessor contextAccessor = null) { if (optionsAccessor == null) { var options = new AuthOptions { Secret = Faker.Random.AlphaNumeric(32) }; optionsAccessor = Substitute.For <IOptions <AuthOptions> >(); optionsAccessor.Value.Returns(options); } tokenRepository = tokenRepository ?? Substitute.For <IAccessTokenRepository>(); contextAccessor = contextAccessor ?? Substitute.For <IHttpContextAccessor>(); gitHubUserModelService = gitHubUserModelService ?? Substitute.For <IGitHubUserModelService>(); var accessTokenService = new AccessTokenService(optionsAccessor, tokenRepository, gitHubUserModelService, contextAccessor); return(accessTokenService); }
public ExternalProviderSaga(IBus bus, IEventStore eventStore, ISchedulingRepository schedulingRepository, AccessTokenService accessTokenService) : base(bus, eventStore) { _bus = bus; _eventStore = eventStore; _schedulingRepository = schedulingRepository; _accessTokenService = accessTokenService; }
public LineItemsViewComponent( AccessTokenService accessTokenService, IHttpClientFactory httpClientFactory) { _accessTokenService = accessTokenService; _httpClientFactory = httpClientFactory; }
public AuthController(RefreshTokenRepository refreshTokenRepository, UserRepository userRepository, AccessTokenService accessTokenServices) { _refreshTokenRepository = refreshTokenRepository; _userRepository = userRepository; _accessTokenServices = accessTokenServices; }
public LocationController(LocationRepository locationRepository, UserRepository userRepository, AccessTokenService accessTokenService) { _locationRepository = locationRepository; _userRepository = userRepository; _accessTokenService = accessTokenService; }
public ActionResult GetMaterialList() { MaterialListPost postobj = new MaterialListPost(); postobj.count = 20; postobj.type = "image"; postobj.offset = 0; string token = AccessTokenService.GetAccessToken(); string postJsonStr = JsonConvert.SerializeObject(postobj); string result = WechatMaterialServices.GetMaterialList(token, postJsonStr); WechatResult wechatResult = JsonConvert.DeserializeObject <WechatResult>(result); if (wechatResult.errcode != 0) { ViewBag.msg = "获取素材列表失败!返回错误代码如下:"; ViewBag.content = result; } else { MaterialList materialList = JsonConvert.DeserializeObject <MaterialList>(result); ViewData["materialList"] = materialList.item; ViewBag.msg = "success"; } return(View()); }
public ActionResult GetMenu() { string token = AccessTokenService.GetAccessToken(); string result = WechatMenuServices.GetMenu(token); ViewBag.result = result; return(View()); }
public ActionResult Logout(string accessToken) { return(Invoke(() => { AccessTokenService.Logout(accessToken); return new { Result = true }; })); }
public EventController(EventRepository eventRepository, AccessTokenService accessTokenService, UserRepository userRepository, LocationRepository locationRepository) { _eventRepository = eventRepository; _accessTokenService = accessTokenService; _userRepository = userRepository; _locationRepository = locationRepository; }
public AppClaimsPrincipalFactory( UserManager <ApplicationUser> userManager, RoleManager <IdentityRole> roleManager, IOptions <IdentityOptions> optionsAccessor, AccessTokenService accessTokenService) : base(userManager, roleManager, optionsAccessor) { _accessTokenService = accessTokenService; }
public static async Task <List <String> > GetUsers([ActivityTrigger] DurableActivityContext context, TraceWriter log) { var token = await AccessTokenService.FetchToken(); var ids = await UserService.FetchUsers(token); return(ids); }
public ActionResult RenewalAccessToken(string accessToken) { return(Invoke(() => { AccessTokenService.UpdateIssueDate(accessToken); return new { Result = true }; })); }
public ToolModel( ApplicationDbContext context, StateDbContext stateContext, AccessTokenService accessTokenService, IHttpClientFactory httpClientFactory) { _context = context; _stateContext = stateContext; _accessTokenService = accessTokenService; _httpClientFactory = httpClientFactory; }
public void GetAccessToken() { var iAccessToken = DependencyManager.Resolve <IAccessTokenRepository>(); var token = iAccessToken.GetAccessToken(1); AccessTokenService accessTokenService = new AccessTokenService(); string errorMessage; var result = accessTokenService.GetAccessToken(1, out errorMessage); Assert.IsTrue(result != null && !result.IsExpired()); }
//public ActionResult demo() //{ // string str = @"开始时间:2016-1-1" + "\r\n" // + "结束时间:2017-1-1" + "\r\n" // + "沙尘天气等级:2" + "\r\n" // + "PM10日均浓度最大值:2ug/m3" + "\r\n" // + "影响范围:济南,青岛"; // string oldpath = @"/Resource/Image/78041949.png"; // string avatarpath=@"/Resource/Image/avatar.png"; // // string newpath = @"/Resource/Image/"+CommonTools.getRandomNumber(10000,99999999)+".png"; // string imagepath = ImageTools.composeImage(oldpath, avatarpath, @"/Resource/Image/" + CommonTools.getRandomNumber(10000, 99999999) + ".png"); // string textimagepath = ImageTools.composeText(oldpath, "我是贺苏\r\n邀请你来参加第二节", @"/Resource/Image/" + CommonTools.getRandomNumber(10000, 99999999) + ".png"); // string texttoimagepath = ImageTools.SaveTextToImage(str); // ViewBag.imagepath = imagepath; // ViewBag.textimagepath = textimagepath; // ViewBag.texttoimagepath = texttoimagepath; // return View(); //} public ActionResult Index() { string access_token = AccessTokenService.GetAccessToken(); WechatConfig wechatconfig = AccessTokenService.GetWechatConfig(); string xml = XmlSerializerHelper.ToXml(wechatconfig); ViewBag.Message = access_token; ViewBag.Message2 = xml; return(View()); }
//public ActionResult About() //{ // WechatTemplateMessage msgData = new WechatTemplateMessage // { // touser = "******", // template_id = "KqDQm6LejvmNDrTWIQuRYoflIpi7JKgvUNsQfqf8i70", // url = "http://www.baidu.com", // data = new // { // welcome = new // { // value = "训练提醒通知", // color = "#173177" // }, // first = new // { // value = "2015年6月7日", // color = "#173177" // }, // second = new // { // value = "踢皮球", // color = "#173177" // }, // } // }; // string access_token = AccessTokenService.GetAccessToken(); // string operate="SendTemplateMessage"; // string postdata = JsonConvert.SerializeObject(msgData); // string result=WechatService.wechatApi(operate,access_token,postdata); // ViewBag.Message = JsonConvert.SerializeObject(msgData); // ViewBag.result = result; // return View(); //} //public ActionResult SendMessage() //{ // WechatTemplateMessage msgData = new WechatTemplateMessage // { // touser = "******", // template_id = "S0jkUpR2R7C6PIpnJHRD1GxIad27dln4vEOtD7uRl4A", // url = "http://www.baidu.com", // data = new // { // first = new // { // value = "宝贝,你好,训练时间到了", // color = "#173177" // }, // keyword1 = new // { // value = "踢皮球运动", // color = "#173177" // }, // keyword2 = new // { // value = "30分钟", // color = "#173177" // }, // remark = new // { // value = "只有坚持不懈的努力,才能有进步,加油!", // color = "#173177" // }, // } // }; // string access_token = AccessTokenService.GetAccessToken(); // string postdata = JsonConvert.SerializeObject(msgData); // string result = WechatMessageServices.SendTempletMessge(access_token, postdata); // ViewBag.Message = JsonConvert.SerializeObject(msgData); // ViewBag.result = result; // return View(); //} //public ActionResult Contact() //{ // UserListItem[] u = new UserListItem[2]; // u[0] = new UserListItem { openid = "oChqYt13RL8dBi0zKHo0kao-aSHo", lang = "zh_CN" }; // u[1] = new UserListItem { openid = "oChqYt1b0t1U2_b_U9ag1JQyrebM", lang = "zh_CN" }; // UserList ulist = new UserList // { // user_list = u // }; // string postdata = JsonConvert.SerializeObject(ulist); // string access_token = AccessTokenService.GetAccessToken(); // string operate = "GetUserListInfo"; // string result = WechatService.wechatApi(operate, access_token, postdata); // ViewBag.Message = postdata; // ViewBag.result = result; // return View(); //} //public ActionResult Jstest() //{ // string userAgent=Request.UserAgent; // string access_token = AccessTokenService.GetAccessToken(); // string url=string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi",access_token); // // result = HttpWebResponseUtility.CreateGetHttpResponse(url,null,userAgent,null); // HttpWebResponse response = HttpWebResponseUtility.CreateGetHttpResponse(url, null, userAgent, null); // Stream stream = response.GetResponseStream(); // StreamReader sr = new StreamReader(stream); // string result = sr.ReadToEnd(); // WechatJsTicket ticket = JsonConvert.DeserializeObject<WechatJsTicket>(result); // string jsapi_ticket = ticket.ticket; // string url2 = Request.Url.ToString(); // string string1 = "jsapi_ticket=" + jsapi_ticket + // "&noncestr=" + "zhaozheng" + // "×tamp=" + "1414587457" + // "&url=" + url2; // string x = SkyEncrypt.SHA1(string1); // ViewBag.signature = x; // return View(); //} //public ActionResult js() //{ // string userAgent = Request.UserAgent; // string access_token = AccessTokenService.GetAccessToken(); // string url = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", access_token); // // result = HttpWebResponseUtility.CreateGetHttpResponse(url,null,userAgent,null); // HttpWebResponse response = HttpWebResponseUtility.CreateGetHttpResponse(url, null, userAgent, null); // Stream stream = response.GetResponseStream(); // StreamReader sr = new StreamReader(stream); // string result = sr.ReadToEnd(); // WechatJsTicket ticket = JsonConvert.DeserializeObject<WechatJsTicket>(result); // string jsapi_ticket = ticket.ticket; // string url2 = Request.Url.ToString(); // string string1 = "jsapi_ticket=" + jsapi_ticket + // "&noncestr=" + "zhaozhengo" + // "×tamp=" + "1414587487" + // "&url=" + url2; // string x = SkyEncrypt.SHA1(string1); // ViewBag.signature = x; // return View(); //} //public ActionResult wechatjs() //{ // string access_token = AccessTokenService.GetAccessToken(); // string userAgent = Request.UserAgent; // string jsapi_ticket = WechatJsServices.GetJsapi_ticket(access_token, userAgent); // string timestamp = TimeHelp.GetTimeStamp(DateTime.Now, 10); // string nonceStr = "zhaozheng"; // string currentUrl = Request.Url.ToString(); // string signature = WechatJsServices.GetSignature(jsapi_ticket, nonceStr, timestamp, currentUrl); // WechatConfig wechatconfig = AccessTokenService.GetWechatConfig(); // ViewBag.timestamp = int.Parse(timestamp); // ViewBag.nonceStr = nonceStr; // ViewBag.appid = wechatconfig.Appid; // ViewBag.signature = signature; // ViewBag.jsapi_ticket = jsapi_ticket; // ViewBag.currentUrl = currentUrl; // return View(); //} public ActionResult GetUserInfo() { WechatConfig wechatconfig = AccessTokenService.GetWechatConfig(); string REDIRECT_URI = System.Web.HttpUtility.UrlEncode("http://wx.zzd123.com/Home/GetUserId"); string SCOPE = "snsapi_userinfo"; string url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + wechatconfig.Appid + "&redirect_uri=" + REDIRECT_URI + "&response_type=code&scope=" + SCOPE + "&state=STATE#wechat_redirect"; return(Redirect(url)); }
/// <summary> /// 获取微信用户信息 /// </summary> /// <param name="appId"></param> /// <param name="openId"></param> /// <returns></returns> public UserInfo GetUserInfo(int appId, string openId) { //判断appId是否合法 var appInfo = _appInfoRepository.GetAppInfo(appId); if (appInfo == null) { throw new Exception(string.Format("获取用户信息失败:通过参数{0}获取到的公众号信息为空", appId)); } var userInfoFromDb = _userRepository.GetUserInfo(appId, openId); //如果从数据库获取用户为空,则需要重新从微信更新 string tokenErrorMessage; var accessToken = new AccessTokenService().GetAccessToken(appId, out tokenErrorMessage); if (accessToken == null || !string.IsNullOrEmpty(tokenErrorMessage)) { throw new Exception(string.Format("获取用户信息失败:", tokenErrorMessage)); } if (userInfoFromDb != null) { return(userInfoFromDb); } var newUserInfoFromWeiXin = UserApi.Info(accessToken.Ticket, openId); if (newUserInfoFromWeiXin == null) { throw new Exception("获取用户信息失败:从微信获取到的用户为空"); } var newUserInfo = new UserInfo { AppId = appId, Openid = newUserInfoFromWeiXin.openid, City = newUserInfoFromWeiXin.city, Country = newUserInfoFromWeiXin.country, Groupid = newUserInfoFromWeiXin.groupid, Headimgurl = newUserInfoFromWeiXin.headimgurl, Language = newUserInfoFromWeiXin.language, Nickname = newUserInfoFromWeiXin.nickname, Province = newUserInfoFromWeiXin.province, Remark = newUserInfoFromWeiXin.remark, Sex = newUserInfoFromWeiXin.sex, //Subscribe = newUserInfoFromWeiXin.subscribe, SubscribeTime = newUserInfoFromWeiXin.subscribe_time }; //缓存到数据库 _userRepository.Add(newUserInfo); return(newUserInfo); }
public void AccessTokenServiceTryMakeStaffAccessTokenFailure() { var config = A.Fake <IConfiguration>(); var dat = Guid.NewGuid().ToString(); config["DarwinAccessToken"] = dat; var service = new AccessTokenService(A.Fake <ILogger <AccessTokenService> >(), config); var success = service.TryMakeStaffAccessToken(out var token); Assert.False(success); Assert.True(string.IsNullOrWhiteSpace(token.TokenValue)); }
public void AccessTokenServiceTryMakeStaffAccessTokenSuccess() { var config = A.Fake <IConfiguration>(); var dat = Guid.NewGuid().ToString(); config["DarwinStaffAccessToken"] = dat; var service = new AccessTokenService(A.Fake <ILogger <AccessTokenService> >(), config); var success = service.TryMakeStaffAccessToken(out var token); Assert.True(success); Assert.Equal(dat, token.TokenValue); }
private CalendarService CalendarServiceByToken(AccessTokenService accessTokenService) { var tokenObject = JObject.Parse(_accessTokenService.GetValue()); var tokenResponse = new TokenResponse(); tokenResponse.AccessToken = tokenObject.GetValue("AccessToken").Value <string>(); var service = new CalendarService(); service.HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", tokenResponse.AccessToken); return(service); }
public async Task LoggedInOrReverified() { var path = Path.Combine(TestContext.CurrentContext.TestDirectory, "accesstoken.json"); this.AccessToken = JsonConvert.DeserializeObject <AccessTokenDto>(File.ReadAllText(path)); if (!this.AccessToken.IsValid) { var authService = new AccessTokenService(this._configuration, this._logger); this.AccessToken = (await authService.CheckAndRevalidateIfNeededAsync(this.AccessToken).ConfigureAwait(false)).token; File.WriteAllText(path, JsonConvert.SerializeObject(this.AccessToken)); } }
public ActionResult SendTempletMessage() { WechatTemplateMessage msgData = new WechatTemplateMessage { touser = "******", template_id = "S0jkUpR2R7C6PIpnJHRD1GxIad27dln4vEOtD7uRl4A", url = "http://www.baidu.com", data = new { first = new { value = "宝贝,你好,训练时间到了", color = "#173177" }, keyword1 = new { value = "踢皮球运动", color = "#173177" }, keyword2 = new { value = "30分钟", color = "#173177" }, remark = new { value = "感谢您的参与。" } } }; string access_token = AccessTokenService.GetAccessToken(); string postdata = JsonConvert.SerializeObject(msgData); string result = WechatMessageServices.SendTempletMessge(access_token, postdata); WechatResult wechatResult = JsonConvert.DeserializeObject <WechatResult>(result); if (wechatResult.errcode == 0) { ViewBag.msg = "模板消息发送成功!操作代码如下:"; ViewBag.result = result; } else { ViewBag.msg = "模板消息发送失败!错误代码如下:"; ViewBag.result = result; } return(View()); }
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext) { if (Brands == null) { try { BrandService service = new BrandService(); Brands = service.GetListBrand(); } catch (Exception) { AccessTokenService tkService = new AccessTokenService(); tkService.UpdateToken(); BrandService service = new BrandService(); Brands = service.GetListBrand(); } } filterContext.Controller.ViewBag.Brands = Brands; filterContext.Controller.ViewBag.LinkService = LinkService; this.OnActionExecuting(filterContext); }