Http-запросы Firebase возвращают «InvalidRegistration» в ajax, если только через приложение - PullRequest
0 голосов
/ 01 октября 2019

Так что я использую Cordova Firebase Plugin и он работает для правильной генерации токенов. Для тестирования я проверяю прохождение уведомлений непосредственно из моего приложения через ajax, чтобы убедиться, что токен действителен. Это работает нормально, используя этот обычный вызов ajax:

$.ajax({
        type: "POST",
        url: "https://fcm.googleapis.com/fcm/send",
        headers: { 'Authorization': 'key=<My key>' },
        data: JSON.stringify(
            {
                "to": <deviceId?,
                "notification": {
                    "body": "Working!",
                    "title": "Omg it worked",
                },
                "data": {
                    "body": "Working!",
                    "title": "Omg it worked",
                },
                "content_available": true,
                "priority": "high"
            }
        ),
        contentType: "application/json; charset=utf-8",
        success: function (result) {
            alert(typeof result);
            if (result.failure === 1) {
                alert("Token invalid, unregistering and creating new one");
                window.FirebasePlugin.unregister();

                window.FirebasePlugin.getToken(function (token) {
                    localStorage.setItem("firebaseToken", token);  
                    //here the Token update call will test again once new token event is fired
                });
            }
            else {
                var currentToken = localStorage.getItem("firebaseToken");
                alert("Token valid now <br />" + currentToken);
            }
        },
        error: function (msg) {
            alert("Ajax Error " + JSON.stringify(msg));
        }
    });

Так что это работает изнутри самого приложения, а также работает через консоль Firebase для отправки сообщений на этот идентификатор устройства. У меня есть тот же код, помещенный в локальный модуль с использованием того же вызова AJAX, и он терпит неудачу таким же образом. Рестлет, Бессонница, Почтальон и т. Д. Все возвращают одно и то же.

{
    multicast_id: 8834986220110966000,
    success: 0,
    failure: 1,
    canonical_ids: 0,
    results: [ { error: 'InvalidRegistration' } ] 
}

Я проверил ключи сервера, идентификаторы устройств, авторизованные домены, проверил сведения о заголовке сети на работающие и сбойные вызовы, открыл все приложения с помощью плагина белого списка cordova и исчерпал всеЯ могу найти, прибегая к помощи. Вы знаете, что находитесь в конце очереди, когда все становится русским или китайским. Все говорит, просто проверьте ваш идентификатор устройства, но он действителен через ajax-вызов приложения и действителен через консоль Firebase.

У всех есть идеи по этому поводу. Я думаю, что это сообщение, вероятно, вводит в заблуждение. Это не может быть недействительным, так как я могу подключиться с помощью вызова ajax через приложение и консоль. Возможно, приложение по какой-то причине просто отклоняет сообщение?

...