exchangeOAuthCode method
Implementation
Future<void> exchangeOAuthCode(
{required String userId,
required String provider,
required String authCode}) {
return linkService
// The Redirect URL here is just a placeholder value.
// linkService.exchangeOAuthCode requests the API not to redirect.
.createLink(userId, provider, "x-vital-noop://")
.then((tokenResponse) {
if (!tokenResponse.isSuccessful || tokenResponse.body == null) {
throw VitalHTTPStatusException(
tokenResponse.statusCode, "${tokenResponse.error}");
}
return tokenResponse.body!.linkToken;
})
.then((linkToken) {
final request = IsLinkTokenValidRequest(linkToken: linkToken);
return linkService
.isTokenValid(request: request)
.then((checkResponse) {
if (!checkResponse.isSuccessful) {
throw VitalHTTPStatusException(
checkResponse.statusCode, "${checkResponse.error}");
}
return linkToken;
});
})
.then((linkToken) => linkService.exchangeOAuthCode(
provider: provider,
code: authCode,
linkToken: linkToken,
))
.then((exchangeResponse) {
if (!exchangeResponse.isSuccessful) {
throw VitalHTTPStatusException(
exchangeResponse.statusCode, "${exchangeResponse.error}");
}
});
}