This commit is contained in:
Hamza-Ayed
2024-09-10 03:10:04 +03:00
parent 3135187408
commit 6aeb091719
15 changed files with 419 additions and 284 deletions

View File

@@ -11,9 +11,10 @@ class AccessTokenManager {
factory AccessTokenManager(String jsonKey) {
if (_instance._isServiceAccountKeyInitialized()) {
// Prevent re-initialization
print('Service account key already initialized.');
return _instance;
}
print('Initializing service account key.');
_instance.serviceAccountJsonKey = jsonKey;
return _instance;
}
@@ -28,23 +29,45 @@ class AccessTokenManager {
}
Future<String> getAccessToken() async {
if (_accessToken != null && DateTime.now().isBefore(_expiryDate!)) {
return _accessToken!.data;
}
print('Attempting to get a new access token...');
try {
// Parse service account credentials from JSON
print('Parsing service account credentials...');
final serviceAccountCredentials = ServiceAccountCredentials.fromJson(
json.decode(serviceAccountJsonKey));
// Log service account email (or other non-sensitive information)
print('Service account email: ${serviceAccountCredentials.email}');
// Create an authenticated client via the service account
print('Creating authenticated client via service account...');
final client = await clientViaServiceAccount(
serviceAccountCredentials,
['https://www.googleapis.com/auth/firebase.messaging'],
);
// Log successful client creation
print('Authenticated client created successfully.');
// Update the access token and expiry date
_accessToken = client.credentials.accessToken;
_expiryDate = client.credentials.accessToken.expiry;
// Log the obtained token and expiry time
print('Access token obtained: ${_accessToken!.data}');
print('Token expiry date: $_expiryDate');
// Close the client to prevent resource leaks
print('Closing authenticated client...');
client.close();
// Return the newly fetched access token
return _accessToken!.data;
} catch (e) {
throw Exception('Failed to obtain access token');
// Log error if token fetch fails
print('Failed to obtain a new access token: $e');
throw Exception('Failed to obtain a new access token: $e');
}
}
}