getAccessToken method

  1. @override
Future<String?> getAccessToken()
override

get access token

Implementation

@override
Future<String?> getAccessToken() async {
  try {
    final accessToken = await _secureStorage.read(key: _accessTokenKey);
    if ((accessToken?.isEmpty) ?? true) {
      return null;
    }

    final accessTokenExpiresAt = await _secureStorage.read(key: _expireKey);
    if ((accessTokenExpiresAt?.isEmpty) ?? true) {
      return null;
    }

    final expAt = DateTime.parse(accessTokenExpiresAt!).add(const Duration(minutes: -2));

    if (DateTime.now().toUtc().isAfter(expAt)) {
      // expired, refresh
      final tokenMap = await _refreshToken();
      if (tokenMap == null) {
        // refresh failed
        return null;
      }
      // refresh success
      return tokenMap['access_token'];
    }

    // not expire
    return accessToken;
  } catch (err) {
    debugPrint("# DefaultTokenManager -> getAccessToken: $err");
    return null;
  }
}