Ошибка отправки push-уведомления .NET FirebaseC#

Место общения программистов C#
Ответить
Anonymous
 Ошибка отправки push-уведомления .NET Firebase

Сообщение Anonymous »

Отправка сообщений через FCM работала вчера, но сегодня я получаю следующую ошибку:

В запросе отсутствуют необходимые учетные данные для аутентификации. Ожидаемый токен доступа OAuth 2, файл cookie для входа или другие действительные учетные данные для аутентификации. См.
https://developers.google.com/identity/ ... le-project.

В качестве первого шага я создал новый файл JSON в Firebase, но по-прежнему получаю ту же ошибку. Как это исправить?
public async Task SendPushNotificationAsync(string fcmToken, string title, string message)
{
if (string.IsNullOrWhiteSpace(fcmToken))
{
_logger.LogWarning("FCM token is null or empty");
throw new ArgumentException("FCM token cannot be null or empty", nameof(fcmToken));
}

if (FirebaseApp.DefaultInstance == null)
{
_logger.LogError("Firebase App is not initialized. DefaultInstance is null");
throw new ApplicationException("Firebase App is not initialized");
}

var notification = new Message
{
Token = fcmToken,
Notification = new FirebaseAdmin.Messaging.Notification
{
Title = title,
Body = message
},
Apns = new ApnsConfig()
{
Aps = new Aps()
{
Alert = new ApsAlert()
{
Title = title,
Body = message
},
Sound = "default",
Badge = 1,
},
}
};

try
{
_logger.LogInformation("Sending push notification to token: {Token}", fcmToken);
var messageId = await FirebaseMessaging.DefaultInstance.SendAsync(notification); // Error Line
_logger.LogInformation("Push notification sent successfully. Message ID: {MessageId}", messageId);
}
catch (Exception e)
{
_logger.LogError(e, "Error sending push notification to token {Token}", fcmToken);
throw new ApplicationException($"Error sending push notification: {e.Message}", e);
}
}

Служба CTOR:
public FirebasePushService(IConfiguration configuration, ILogger logger, IWebHostEnvironment environment)
{
_logger = logger;

// Initialize Firebase Admin SDK if not already initialized
if (FirebaseApp.DefaultInstance == null)
{
var firebaseConfigPath = configuration["Firebase:ConfigPath"];

if (string.IsNullOrEmpty(firebaseConfigPath))
{
throw new ApplicationException("Firebase:ConfigPath configuration is missing");
}

// Try to find the file in multiple locations, using ContentRootPath as primary source
var possiblePaths = new[]
{
firebaseConfigPath,
Path.Combine(environment.ContentRootPath, firebaseConfigPath),
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, firebaseConfigPath),
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..", firebaseConfigPath)
};

var configPath = possiblePaths.FirstOrDefault(File.Exists);

if (configPath == null)
{
_logger.LogError("Firebase configuration file not found in any of these locations: {Paths}",
string.Join(", ", possiblePaths));
throw new ApplicationException(
$"Firebase configuration file not found in any of these locations: {string.Join(", ", possiblePaths)}");
}

try
{
_logger.LogInformation("Initializing Firebase with config file: {ConfigPath}", configPath);
FirebaseApp.Create(new AppOptions()
{
Credential = GoogleCredential.FromFile(configPath)
});
_logger.LogInformation("Firebase initialized successfully");
}
catch (Exception ex)
{
_logger.LogError(ex, "Failed to initialize Firebase Admin SDK");
throw;
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... tion-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»