getAccessToken method
get access token
Implementation
@override
Future<String?> getAccessToken() async {
try {
final accessToken = await _secureStorage.read(key: _accessTokenKey);
if ((accessToken?.isEmpty) ?? true) {
return null;
}
final accessTokenExpiresAt = await _secureStorage.read(key: _expireKey);
if ((accessTokenExpiresAt?.isEmpty) ?? true) {
return null;
}
final expAt = DateTime.parse(accessTokenExpiresAt!).add(const Duration(minutes: -2));
if (DateTime.now().toUtc().isAfter(expAt)) {
// expired, refresh
final tokenMap = await _refreshToken();
if (tokenMap == null) {
// refresh failed
return null;
}
// refresh success
return tokenMap['access_token'];
}
// not expire
return accessToken;
} catch (err) {
debugPrint("# DefaultTokenManager -> getAccessToken: $err");
return null;
}
}