refreshAccount method
Implementation
@override
Future<bool> refreshAccount(Account _account) async {
try {
var account = _account as OAuthAccount?;
if (account == null) throw new Exception("Invalid Account");
var postData = await getRefreshTokenPostData(account);
var resp = await httpClient.post(Uri.parse(tokenUrl!),
headers: {
"Accept": "application/json",
"Content-Type": "application/x-www-form-urlencoded"
},
body: postData);
var map = convert.json.decode(resp.body);
var result = OAuthResponse.fromJson(map);
if (result.error?.isNotEmpty ?? false) {
if ((account.refreshToken?.isEmpty ?? true) ||
result.error == "invalid_grant" ||
(result.errorDescription?.contains("revoked") ?? false)) {
account.token = "";
account.refreshToken = "";
saveAccountToCache(account);
return await performAuthenticate() != null;
} else
throw new Exception("${result.error} : ${result.errorDescription}");
}
if (result.refreshToken?.isNotEmpty ?? false)
account.refreshToken = result.refreshToken;
account.tokenType = result.tokenType;
account.token = result.accessToken;
account.expiresIn = result.expiresIn;
account.created = DateTime.now().toUtc();
currentAccount = account;
saveAccountToCache(account);
return true;
} catch (exception) {}
return false;
}