getTokenResponse method
Implementation
Future<TokenResponse> getTokenResponse([bool forceRefresh = false]) async {
if (!forceRefresh &&
_token.accessToken != null &&
(_token.expiresAt == null ||
_token.expiresAt!.isAfter(DateTime.now()))) {
return _token;
}
if (_token.accessToken == null && _token.refreshToken == null) {
return _token;
}
var grantType = _token.refreshToken != null
? 'refresh_token'
: 'client_credentials'; // TODO: make this selection more explicit
var json = await http.post(client.issuer.tokenEndpoint,
body: {
'grant_type': grantType,
if (grantType == 'refresh_token')
'refresh_token': _token.refreshToken,
if (grantType == 'client_credentials')
'scope': _token.toJson()['scope'],
'client_id': client.clientId,
if (client.clientSecret != null) 'client_secret': client.clientSecret
},
client: client.httpClient);
updateToken(json);
return _token;
}