getAccessToken method

Future<String> getAccessToken()

Get a valid access token, refreshing if necessary

Implementation

Future<String> getAccessToken() async {
  if (hasValidToken) {
    return _currentToken!.accessToken;
  }

  if (_currentToken?.refreshToken != null) {
    try {
      final newToken = await _client.refreshToken(
        refreshToken: _currentToken!.refreshToken!,
      );
      setToken(newToken);
      return newToken.accessToken;
    } catch (e) {
      _errorController.add(
        e is OAuthError
            ? e
            : OAuthError(
              error: 'refresh_failed',
              errorDescription: e.toString(),
            ),
      );
      rethrow;
    }
  }

  throw OAuthError(
    error: 'no_valid_token',
    errorDescription: 'No valid token available and no refresh token',
  );
}