logout static method

Future<bool> logout(
  1. OAuthProvider provider,
  2. String idTokenHint
)

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;
  }
}