getToken method
Implementation
Future<String> getToken() async {
if (_token != null && _expiry!.isAfter(DateTime.now())) {
return _token!;
}
final response = await http.post(
Uri.parse('https://login.microsoftonline.com/$tenantId/oauth2/token'),
body: {
'grant_type': 'client_credentials',
'client_id': clientId,
'client_secret': clientSecret,
'resource': resource,
},
);
if (response.statusCode != 200) {
throw Exception('Failed to get token: ${response.body}');
}
final data = jsonDecode(response.body);
_token = data['access_token'];
_expiry = DateTime.now().add(Duration(seconds: data['expires_in'] - 60));
return _token!;
}