public async Task Authenticate(string successUrl = null, string errorUrl = null, params Scope[] scopes) { Log.Debug("Authenticating with HSReplay.net..."); Authenticating?.Invoke(true); try { var data = await GetAuthData(successUrl ?? SuccessUrl, errorUrl ?? ErrorUrl); if (data == null) { Log.Error("Authentication failed, received no data"); AuthenticationError?.Invoke(AuthenticationErrorType.Unknown); return; } _data.Code = data.Code; _data.RedirectUrl = data.RedirectUrl; _data.TokenData = null; } catch (Exception e) { Log.Error(e); AuthenticationError?.Invoke(AuthenticationErrorType.Unknown); return; } Log.Debug("Authentication complete"); try { await UpdateToken(); Log.Debug("Claiming upload token if necessary"); if (_account.TokenStatus == TokenStatus.Unknown) { await _api.UpdateTokenStatus(); } if (_account.TokenStatus == TokenStatus.Unclaimed) { await ClaimUploadToken(_account.UploadToken); } Log.Debug("Updating account data"); if (!await UpdateAccountData()) { AuthenticationError?.Invoke(AuthenticationErrorType.AccountData); } } catch (Exception e) { AuthenticationError?.Invoke(AuthenticationErrorType.Unknown); Log.Error(e); } finally { Authenticating?.Invoke(false); Authenticated?.Invoke(); } }
public static async Task TryAuthenticate(string successUrl = null, string errorUrl = null) { Authenticating?.Invoke(true); if (await HSReplayNetOAuth.Authenticate(successUrl, errorUrl)) { if (!await HSReplayNetOAuth.UpdateAccountData()) { ErrorManager.AddError("HSReplay.net Error", "Could not load HSReplay.net account status." + " Please try again later."); AuthenticationError?.Invoke(AuthenticationErrorType.AccountData); } await SyncCollection(); } else { ErrorManager.AddError("Could not authenticate with HSReplay.net", "Please try running HDT as administrator " + "(right-click the exe and select 'Run as administrator').\n" + "If that does not help please try again later.", true); AuthenticationError?.Invoke(AuthenticationErrorType.Authentication); } Authenticating?.Invoke(false); }