logout static method

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

Implementation

static Future<bool> logout(OAuthProvider provider, String idTokenHint) async {
  try {
    final discoveryResponse =
        await http.get(Uri.parse(provider.discoveryUrl));
    if (discoveryResponse.statusCode != 200) {
      throw Exception('Failed to fetch discovery document');
    }

    final discoveryData = json.decode(discoveryResponse.body);
    final endSessionEndpoint = discoveryData['end_session_endpoint'];

    if (endSessionEndpoint == null) {
      throw Exception('End session endpoint not found in discovery document');
    }

    final logoutResponse = await http
        .get(Uri.parse(endSessionEndpoint).replace(queryParameters: {
      'id_token_hint': idTokenHint,
    }));
    log(logoutResponse.body);
    return logoutResponse.statusCode == 200;
  } catch (e) {
    debugPrint('Logout error: $e');
    return false;
  }
}