public string GetRefreshedToken(TokenHelper tokenHelper) { if (IsExpired) { var app = ThirdPartySelector.GetApp(App); try { tokenHelper.Logger.Debug("Refresh token for app: " + App); var refreshUrl = app.GetRefreshUrl(); var refreshed = OAuth20TokenHelper.RefreshToken(refreshUrl, this); if (refreshed != null) { AccessToken = refreshed.AccessToken; RefreshToken = refreshed.RefreshToken; ExpiresIn = refreshed.ExpiresIn; Timestamp = DateTime.UtcNow; tokenHelper.SaveToken(this); } } catch (Exception ex) { tokenHelper.Logger.Error("Refresh token for app: " + app, ex); } } return(AccessToken); }
private void RequestCode(HttpContext context) { var token = GetToken(context.Request.Query["code"]); if (token == null) { Logger.Error("BoxApp: token is null"); throw new SecurityException("Access token is null"); } var boxUserId = context.Request.Query["userId"]; if (AuthContext.IsAuthenticated) { if (!CurrentUser(boxUserId)) { Logger.Debug("BoxApp: logout for " + boxUserId); CookiesManager.ClearCookies(CookiesType.AuthKey); AuthContext.Logout(); } } if (!AuthContext.IsAuthenticated) { var userInfo = GetUserInfo(token, out var isNew); if (userInfo == null) { Logger.Error("BoxApp: UserInfo is null"); throw new Exception("Profile is null"); } var cookiesKey = SecurityContext.AuthenticateMe(userInfo.ID); CookiesManager.SetCookies(CookiesType.AuthKey, cookiesKey); MessageService.Send(MessageAction.LoginSuccessViaSocialApp); if (isNew) { var userHelpTourSettings = SettingsManager.LoadForCurrentUser <UserHelpTourSettings>(); userHelpTourSettings.IsNewUser = true; SettingsManager.SaveForCurrentUser(userHelpTourSettings); PersonalSettingsHelper.IsNewUser = true; PersonalSettingsHelper.IsNotActivated = true; } if (!string.IsNullOrEmpty(boxUserId) && !CurrentUser(boxUserId)) { AddLinker(boxUserId); } } TokenHelper.SaveToken(token); var fileId = context.Request.Query["id"]; context.Response.Redirect(FilesLinkUtility.GetFileWebEditorUrl(ThirdPartySelector.BuildAppFileId(AppAttr, fileId)), true); }
private void RequestCode(HttpContext context) { var state = context.Request.Query["state"]; Logger.Debug("GoogleDriveApp: state - " + state); if (string.IsNullOrEmpty(state)) { Logger.Error("GoogleDriveApp: empty state"); throw new Exception("Empty state"); } var token = GetToken(context.Request.Query["code"]); if (token == null) { Logger.Error("GoogleDriveApp: token is null"); throw new SecurityException("Access token is null"); } var stateJson = JObject.Parse(state); var googleUserId = stateJson.Value <string>("userId"); if (AuthContext.IsAuthenticated) { if (!CurrentUser(googleUserId)) { Logger.Debug("GoogleDriveApp: logout for " + googleUserId); CookiesManager.ClearCookies(CookiesType.AuthKey); AuthContext.Logout(); } } if (!AuthContext.IsAuthenticated) { var userInfo = GetUserInfo(token, out var isNew); if (userInfo == null) { Logger.Error("GoogleDriveApp: UserInfo is null"); throw new Exception("Profile is null"); } var cookiesKey = SecurityContext.AuthenticateMe(userInfo.ID); CookiesManager.SetCookies(CookiesType.AuthKey, cookiesKey); MessageService.Send(MessageAction.LoginSuccessViaSocialApp); if (isNew) { var userHelpTourSettings = SettingsManager.LoadForCurrentUser <UserHelpTourSettings>(); userHelpTourSettings.IsNewUser = true; SettingsManager.SaveForCurrentUser(userHelpTourSettings); PersonalSettingsHelper.IsNewUser = true; PersonalSettingsHelper.IsNotActivated = true; } if (!string.IsNullOrEmpty(googleUserId) && !CurrentUser(googleUserId)) { AddLinker(googleUserId); } } TokenHelper.SaveToken(token); var action = stateJson.Value <string>("action"); switch (action) { case "create": //var folderId = stateJson.Value<string>("folderId"); //context.Response.Redirect(App.Location + "?" + FilesLinkUtility.FolderId + "=" + HttpUtility.UrlEncode(folderId), true); return; case "open": var idsArray = stateJson.Value <JArray>("ids") ?? stateJson.Value <JArray>("exportIds"); if (idsArray == null) { Logger.Error("GoogleDriveApp: ids is empty"); throw new Exception("File id is null"); } var fileId = idsArray.ToObject <List <string> >().FirstOrDefault(); var driveFile = GetDriveFile(fileId, token); if (driveFile == null) { Logger.Error("GoogleDriveApp: file is null"); throw new Exception("File not found"); } var jsonFile = JObject.Parse(driveFile); var ext = GetCorrectExt(jsonFile); if (FileUtility.ExtsMustConvert.Contains(ext) || GoogleLoginProvider.GoogleDriveExt.Contains(ext)) { Logger.Debug("GoogleDriveApp: file must be converted"); if (FilesSettingsHelper.ConvertNotify) { //context.Response.Redirect(App.Location + "?" + FilesLinkUtility.FileId + "=" + HttpUtility.UrlEncode(fileId), true); return; } fileId = CreateConvertedFile(driveFile, token); } context.Response.Redirect(FilesLinkUtility.GetFileWebEditorUrl(ThirdPartySelector.BuildAppFileId(AppAttr, fileId)), true); return; } Logger.Error("GoogleDriveApp: Action not identified"); throw new Exception("Action not identified"); }