Django-Push-уведомления 401 несанкционированных

Я пытаюсь настроить push-уведомления, используя django-push-уведомления, я скопировал большую часть кода из примера. У меня есть кнопка, которая вызывает enablePushNotifications() функция:

export function enablePushNotifications() {
    console.log("enabling push notifications...");
    if (!'serviceWorker' in navigator){
        console.log("Push notifications not supported");
        return;
    }
    navigator.serviceWorker.ready.then(
        (registration)=>{
            registration.pushManager.subscribe({
                userVisibleOnly: true
            }).then(
                (sub)=>{
                    console.log(sub);
                    let endpointParts = sub.endpoint.split("/");
                    let registration_id = endpointParts[endpointParts.length - 1];
                    let data = {
                        'browser': loadVersionBrowser(navigator.userAgent).name.toUpperCase(),
                        'p256dh': btoa(String.fromCharCode.apply(null, new Uint8Array(sub.getKey('p256dh')))),
                        'auth': btoa(String.fromCharCode.apply(null, new Uint8Array(sub.getKey('auth')))),
                        'registration_id': registration_id,
                        'endpoint': sub.endpoint,
                    };
                    request(
                        "/api/subscribe",
                        data
                    )
                }
            ).catch(
                (error)=>console.error(error)
            )
        }
    )
}

Когда я открываю вкладку "Сеть", я не вижу ничего странного в передаваемых свойствах или заголовках. В частности, browser значение верное. Реализация для /api/subscribe URL-адрес выглядит следующим образом:

import push_notifications.models as pushmodels
def registerPush(request):
    data = requestFormatting.get_data(
        request
    )

    device = pushmodels.WebPushDevice(
        name=request.user.username,
        active=True,
        user=request.user,
        registration_id=data["registration_id"],
        p256dh=data["p256dh"],
        auth=data["auth"],
        browser=data["browser"]
    )

    device.save()

    device.send_message("hello")

При вызове этой функции возникает ошибка PushError: Ошибка нажатия: 401 не авторизован. Я тестировал и на Chrome, и на Firefox, оба выдают одну и ту же ошибку. Я уточняю FCM_API_KEY в настройках больше ничего нет. В настоящее время я не использую VAPID, хотя планирую в будущем. Я пробовал различные варианты кода, но, похоже, ничего не работает. В документации неясно, как на самом деле инициализировать устройства, и я выбрал только WebPushDevice объекты, так как кажется, что они содержат атрибуты, аналогичные данным, приведенным в примере.

Это мой первый раз, когда я пытаюсь использовать веб-push, поэтому небольшая помощь будет высоко ценится!

0 ответов

Другие вопросы по тегам