AccessToken constructor
AccessToken(
- String token, {
- Duration invalidthreshold = const Duration(seconds: 30),
})
Implementation
AccessToken(
this.token, {
this.invalidthreshold = const Duration(seconds: 30),
}) {
final splitToken = token.split(".");
if (splitToken.length != 3) {
throw FormatException('Invalid token');
}
try {
// Payload is always the index 1
final payloadBase64 = splitToken[1];
// Base64 should be multiple of 4. Normalize the payload before decode it
final normalizedPayload = base64.normalize(payloadBase64);
// Decode payload, the result is a String
final payloadString = utf8.decode(base64.decode(normalizedPayload));
// Parse the String to a Map<String, dynamic>
final decodedPayload = jsonDecode(payloadString);
// expiration date
final expTimestamp = decodedPayload["exp"] as int;
expirationDate = DateTime.fromMillisecondsSinceEpoch(expTimestamp * 1000);
} catch (error) {
throw FormatException('Invalid token payload ($error)');
}
}