/// <summary> /// Prevents a default instance of the <see cref="AuthService"/> class from being created. /// </summary> private AuthService() { var authSettings = CommonService.GetQBAuthSettings(); authManager = new AuthManager(authSettings); token = GetTokenFormDb(); }
/// <summary> /// Sets the token. /// </summary> /// <param name="token">The token.</param> /// <exception cref="System.ArgumentNullException">token</exception> public void SetToken(TokenBaerer token) { if (token == null) { throw new ArgumentNullException("token"); } _settings.Token = token; }
/// <summary> /// Gets the authentication token. /// </summary> /// <returns></returns> public TokenBaerer GetAuthToken() { if (token == null) { token = GetTokenFormDb(); } return(token); }
/// <summary> /// Gets the qb service settings. /// </summary> /// <param name="token">The token.</param> /// <returns></returns> public static ServiceSettings GetQBServiceSettings(TokenBaerer token) { var serviceSettings = new ServiceSettings(); serviceSettings.BaseUrl = QBSettings.Settings.QBServiceContextBaseUrl; serviceSettings.Token = token; return(serviceSettings); }
/// <summary> /// Gets the token form database. /// </summary> /// <returns></returns> /// <exception cref="System.Exception">No existing auth token in DB</exception> private TokenBaerer GetTokenFormDb() { using (RavenManager rm = RavenManager.Instance) { token = rm.GetLatestToken(); //if (token == null) // throw new Exception("No existing auth token in DB"); } return(token); }
/// <summary> /// Stores the token. /// </summary> /// <param name="token">The token.</param> /// <returns></returns> /// <exception cref="System.Exception">Error in StoreToken</exception> public string StoreToken(TokenBaerer token) { try { using (var session = SessionFactory.Instance.GetSession()) { session.Store(token); session.SaveChanges(); return(session.Advanced.GetDocumentId(token)); } } catch (Exception exception) { throw new Exception("Error in StoreToken", exception); } }
public async Task <ActionResult> Home(string state, string code, string realmId) { QBServiceCreator creator = new QBServiceCreator(); using (var authManager = creator.GetService <IAuthService>()) { TokenBaerer token = await authManager.GetNewTokenAsync(state, code, realmId); realm = realmId; token.RealmId = realmId; accessToken = token.AccessToken; return (View(new AuthModel { Tokens = token })); } }
/// <summary> /// Stores the token asynchronous. /// </summary> /// <param name="token">The token.</param> /// <returns></returns> /// <exception cref="System.Exception">Error in StoreToken</exception> public async Task <string> StoreTokenAsync(TokenBaerer token) { try { using (var session = SessionFactory.Instance.GetSessionAsync()) { await session.StoreAsync(token); await session.SaveChangesAsync(); return(session.Advanced.GetDocumentId(token)); } } catch (Exception exception) { throw new Exception("Error in StoreToken", exception); } }
public async Task <ActionResult> GetCompany() { ServiceSettings ss = new ServiceSettings(); using (var manager = RavenManager.Instance) { TokenBaerer token = await manager.GetLatestTokenAsync(); ss.Token = token; } ss.BaseUrl = "https://sandbox-quickbooks.api.intuit.com/"; using (var sm = new ServiceManager(ss)) { //var res = await sm.GetCompany(); return(View()); } }
/// <summary> /// Updates the token. /// </summary> /// <param name="token">The token.</param> /// <exception cref="System.ArgumentNullException">token</exception> /// <exception cref="System.Exception">Error in UpdateToken</exception> public void UpdateToken(TokenBaerer token) { if (token == null) { throw new ArgumentNullException("token"); } try { using (var session = SessionFactory.Instance.GetSession()) { token.UpdatedDate = DateTime.UtcNow; session.Store(token); session.SaveChanges(); } } catch (Exception exception) { throw new Exception("Error in UpdateToken", exception); } }
/// <summary> /// Refreshes the token. /// </summary> /// <returns></returns> /// <exception cref="System.Exception">No existing auth token in DB</exception> public TokenBaerer RefreshToken() { using (RavenManager rm = RavenManager.Instance) { TokenBaerer oldToken = rm.GetLatestToken(); if (oldToken == null) { throw new Exception("No existing auth token in DB"); } token = authManager.RefreshToken(oldToken.RefreshToken); token.Id = oldToken.Id; token.RealmId = oldToken.RealmId; token.ExpiaryDate = oldToken.ExpiaryDate; rm.UpdateToken(token); return(token); } }
/// <summary> /// Updates the token. /// </summary> /// <param name="token">The token.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException">token</exception> /// <exception cref="System.Exception">Error in UpdateToken</exception> public async Task UpdateTokenAsync(TokenBaerer token) { if (token == null) { throw new ArgumentNullException("token"); } try { using (var session = SessionFactory.Instance.GetSessionAsync()) { token.UpdatedDate = DateTime.UtcNow; await session.StoreAsync(token); await session.SaveChangesAsync(); } } catch (Exception exception) { throw new Exception("Error in UpdateToken", exception); } }
/// <summary> /// Gets the token form responce. /// </summary> /// <param name="responceText">The responce text.</param> /// <returns></returns> /// <exception cref="System.Exception"></exception> private TokenBaerer GetTokenFormResponce(string responceText) { TokenBaerer tokenBaerer = new TokenBaerer(); Dictionary <string, string> refreshTokenDecoded = JsonConvert.DeserializeObject <Dictionary <string, string> >(responceText); if (refreshTokenDecoded.ContainsKey(Constants.ErrorKey)) { throw new Exception(string.Concat("error", refreshTokenDecoded[Constants.ErrorKey])); } if (refreshTokenDecoded.ContainsKey(Constants.AccessTokenKey)) { tokenBaerer.AccessToken = refreshTokenDecoded[Constants.AccessTokenKey]; } if (refreshTokenDecoded.ContainsKey(Constants.RefershTokenKey)) { tokenBaerer.RefreshToken = refreshTokenDecoded[Constants.RefershTokenKey]; } return(tokenBaerer); }
/// <summary> /// Gets the tokens. /// </summary> /// <param name="code">The code.</param> /// <param name="realmId">The realm identifier.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException"> /// code /// or /// realmId /// </exception> /// <exception cref="System.Exception"> /// OAuth get token error: /// </exception> public async Task <TokenBaerer> GetTokensAsync(string code, string realmId) { if (string.IsNullOrEmpty(code)) { throw new ArgumentNullException("code"); } if (string.IsNullOrEmpty(realmId)) { throw new ArgumentNullException("realmId"); } try { TokenBaerer tokenBaerer = new TokenBaerer(); HttpWebRequest accesstokenRequest = await BuildAccessTokenRequestAsync(code); WebResponse accesstokenResponse = await accesstokenRequest.GetResponseAsync(); using (HttpWebResponse response = (HttpWebResponse)accesstokenResponse) { using (var tokenReader = new StreamReader(response.GetResponseStream())) { string responceText = await tokenReader.ReadToEndAsync(); Dictionary <string, string> accessTokenDecoded = JsonConvert.DeserializeObject <Dictionary <string, string> >(responceText); if (accessTokenDecoded.ContainsKey(Constants.ErrorKey)) { throw new Exception(string.Concat("error", accessTokenDecoded[Constants.ErrorKey])); } if (accessTokenDecoded.ContainsKey(Constants.IdTokenKey)) { tokenBaerer.IdentityToken = accessTokenDecoded[Constants.IdTokenKey]; } if (accessTokenDecoded.ContainsKey(Constants.AccessTokenKey)) { tokenBaerer.AccessToken = accessTokenDecoded[Constants.AccessTokenKey]; } if (accessTokenDecoded.ContainsKey(Constants.RefershTokenKey)) { tokenBaerer.RefreshToken = accessTokenDecoded[Constants.RefershTokenKey]; } // refresh token expired in 100 days tokenBaerer.ExpiaryDate = DateTime.UtcNow.AddDays(90); // updated date tokenBaerer.UpdatedDate = DateTime.UtcNow; // set realm tokenBaerer.RealmId = realmId; } } return(tokenBaerer); } catch (Exception exception) { throw new Exception("OAuth get token error: ", exception); } }