getToken method

  1. @override
Future<OAuthToken?> getToken()
override

KO: 저장된 토큰 반환
EN: Returns saved tokens

Implementation

@override
Future<OAuthToken?> getToken() async {
  if (_currentToken != null) {
    return Future.value(_currentToken);
  }

  final version = await _preferences.getString(_versionKey);

  // v1에서는 SharedPreferences에 저장했기 때문에 SharedPreferencesAsync에는 버전 값이 없을 수 있음.
  if (version == null) {
    _legacyPreferences ??= await SharedPreferences.getInstance();
    final legacyVersion = _legacyPreferences?.getString(_versionKey);

    if (legacyVersion != null && isV1Sdk(legacyVersion)) {
      await _migrateV1Token();
    }
  }

  final encryptedToken = await _preferences.getString(_tokenKey);

  if (encryptedToken == null) {
    return null;
  }

  try {
    final jsonToken = _cipher.decrypt(encryptedToken);

    _currentToken = OAuthToken.fromJson(jsonDecode(jsonToken));
  } catch (e) {
    await clear();
    SdkLog.e(
      '[DefaultTokenManager.getToken] decrypt_failed | action=cleared_saved_token',
    );
  }

  return _currentToken;
}