import 'dart:convert'; import 'package:http/http.dart' as http; class FirebaseAuthVerifier { FirebaseAuthVerifier(this._webApiKey); final String _webApiKey; Future verifyBearerToken(String? authorization) async { if (authorization == null || !authorization.startsWith('Bearer ')) { return null; } final String idToken = authorization.substring('Bearer '.length).trim(); if (idToken.isEmpty) { return null; } final Uri uri = Uri.parse( 'https://identitytoolkit.googleapis.com/v1/accounts:lookup?key=$_webApiKey', ); final http.Response response = await http.post( uri, headers: const {'Content-Type': 'application/json'}, body: jsonEncode({'idToken': idToken}), ); if (response.statusCode != 200) { return null; } final Map data = jsonDecode(response.body) as Map; final List users = data['users'] as List? ?? []; if (users.isEmpty) { return null; } return users.first['localId'] as String?; } }