getAccessToken method
Implementation
@override
Future<String> getAccessToken(String code) async {
if (_clientId == null || _clientSecret == null) {
throw PlatformException(
code: 'SETUP_REQUIRED',
message: 'Please call setUp before getAccessToken',
);
}
try {
final tokenUrl = _getTokenUrl();
final response = await html.HttpRequest.request(
tokenUrl,
method: 'POST',
requestHeaders: {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json',
},
sendData: _buildTokenRequestBody(code),
);
if (response.status == 200) {
final responseData = json.decode(response.responseText!);
final accessToken = responseData['access_token'];
if (accessToken != null) {
return accessToken;
} else {
throw PlatformException(
code: 'NO_ACCESS_TOKEN',
message: 'No access token in response',
);
}
} else {
throw PlatformException(
code: 'HTTP_ERROR',
message: 'HTTP ${response.status}: ${response.responseText}',
);
}
} catch (e) {
throw PlatformException(
code: 'TOKEN_ERROR',
message: e.toString(),
);
}
}