executeTokenRequest function
Implementation
Future<TokenResult> executeTokenRequest(Uri uri) async {
final response = await http.post(uri);
if (response.statusCode != 200) {
throw "Unexpected response ${response.statusCode}";
}
dynamic responseBody = jsonDecode(response.body);
final expiresIn = int.tryParse("${responseBody['expires_in']}".trim());
final TokenResult result = {};
result['access_token'] = responseBody['access_token'];
result['refresh_token'] = responseBody['refresh_token'] is String
? responseBody['refresh_token']
: null;
result['expires_on'] = (expiresIn != null)
? DateTime.now().add(Duration(seconds: expiresIn))
: null;
return result;
}