generate method Null safety
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'
});
}