logout static method
Performs the logout process for the authenticated user.
Uses the provider's end_session_endpoint from the discovery document. Returns true if logout was successful.
Implementation
static Future<bool> logout(OAuthProvider provider, String idTokenHint) async {
try {
dev.log('Starting logout process for provider: ${provider.name}');
final discoveryData = await _fetchDiscoveryDocument(provider);
final endSessionEndpoint = discoveryData['end_session_endpoint'];
if (endSessionEndpoint == null) {
throw const OAuthException(
message: 'End session endpoint not found in discovery document',
code: 'missing_endpoint',
);
}
final logoutResponse = await _client.get(
Uri.parse(endSessionEndpoint).replace(
queryParameters: {'id_token_hint': idTokenHint},
),
);
dev.log('Logout response status: ${logoutResponse.statusCode}');
return logoutResponse.statusCode == 200;
} catch (e, stackTrace) {
dev.log(
'Logout error',
error: e,
stackTrace: stackTrace,
);
return false;
}
}