refreshToken method
Gets the refresh token
Implementation
Future refreshToken({inputConf, inputTokens}) async {
final conf = inputConf ?? getConfiguration();
if (conf == null) {
throw 'Could not read configuration from storage';
}
final resource = conf['resource'];
final realm = conf['realm'];
final credentials = conf['credentials'];
final authServerUrl = conf['auth-server-url'];
final savedTokens = inputTokens ?? getTokens();
if (savedTokens == null) {
throw 'Error during kc-refresh-token, savedTokens is $savedTokens';
}
final refreshTokenUrl = '${getRealmURL(realm, authServerUrl)}/protocol/openid-connect/token';
final dio = Dio();
dio.options.headers[HttpHeaders.acceptHeader] = 'application/json';
dio.options.headers[HttpHeaders.contentTypeHeader] = 'application/x-www-form-urlencoded';
final response = await dio.post(
refreshTokenUrl,
data: {
'grant_type': 'refresh_token',
'refresh_token': savedTokens['refresh_token'],
'client_id': Uri.encodeComponent(resource),
'client_secret': credentials != null ? credentials['secret'] : null,
},
);
final jsonResponse = await response.data;
if (response.statusCode == 200) {
saveTokens(jsonResponse);
return jsonResponse;
}
throw 'Error during kc-refresh-token, '
'${response.statusCode}: '
'${response.data}';
}