Регистрационный токен Firebase Cloud Messaging - Flutter и Django
Я пытаюсь отправлять push-уведомления (iOS, Android, Web) определенным пользователям, когда в моем приложении происходят определенные события.
Я использую плагин firebase_admin python с Django, он работает правильно для аутентификации и проверки jwt, но он выдает мне эту ошибку при попытке отправить сообщение/оповещение из Django:
firebase_admin.exceptions.InvalidArgumentError: The registration token is not a valid FCM registration token
Я получаю токен непосредственно из экземпляра Flutter и отправляю его в теле запроса от Flutter к Django.
Мой метод получения токена из Flutter:
await FirebaseMessaging.instance.getToken().then((token) async {
fcm_token = token!;
}).catchError((e) {
print(e);
});
Мой код на языке python, который отправляет уведомление:
registration_token = self.context['request'].data["token"],
# See documentation on defining a message payload.
message = Message(
notification=Notification(
title='New Product Added',
body='A new product called ' + validated_data['name'] + ' has been added to your account.',
),
token=str(registration_token)
)
# Send a message to the device corresponding to the provided
# registration token.
response = send(message)
Я проверил, что токен, передаваемый в Django, правильный, сравнив его с тем, что я получаю от Flutter
Проблема была в том, что registration_token был кортежем, сгенерированным Django, я просто проиндексировал первый элемент в кортеже и ошибка FCM исчезла.