generate method Null safety

  1. @override
Future<Token> generate()
override

generate and persist the OAuth2 refresh token from a single use auth code

Implementation

@override
Future<Token> generate() async {
  final OAuthClient oAuthClient = new OAuthClient(dio);

  final tokenFile = File('.refresh.token');

  String? refreshToken;

  if (tokenFile.existsSync()) {
    refreshToken = tokenFile.readAsStringSync();
  } else {
    final token = await oAuthClient.getToken({
      'client_id': oauthCredentials.clientId,
      'client_secret': oauthCredentials.clientSecret,
      'code': oauthCredentials.code,
      'redirect_uri': 'urn:ietf:wg:oauth:2.0:oob',
      'grant_type': 'authorization_code'
    });

    if (token.refreshToken == null) throw Exception();

    refreshToken = token.refreshToken!;

    tokenFile.writeAsStringSync(refreshToken);
  }

  return await oAuthClient.getToken({
    'client_id': oauthCredentials.clientId,
    'client_secret': oauthCredentials.clientSecret,
    'refresh_token': refreshToken,
    'grant_type': 'refresh_token'
  });
}