Облачные функции Firebase Вызов: ошибка: Сообщение объекта: статус «Неверный запрос»: «INVALID_ARGUMENT» - PullRequest
0 голосов
/ 03 февраля 2019

Прежде всего, я работаю с реагирующим родом

Я хотел использовать настраиваемые утверждения в своем проекте, поскольку он, кажется, соответствует распределению ролей, которое я ожидаю использовать в своем приложении.

после настройки моего приложения, следуя документации, я преуспел в создании некоторых функций

, но, вот в чем дело, когда я пытаюсь вызвать функцию, выбирая конечную точку, я всегда получаю эту ошибку:

в консоли

ошибка: объектное сообщение: статус «Неверный запрос»: «INVALID_ARGUMENT»

в консоли Firebase

   addAdminRoleTest    Request body is missing data. { email: 'dev@test.com' }

Я не смог найти никакого ответа на этот вопрос, кроме того, что я отправил неверную информацию из своей выборки, но я не понимаю, почему.

Я даже попытался упроститьмоя функция только для получения данных, которые я отправил, но у меня была та же самая ошибка

найти ниже моей облачной функции и метода вызова:

functions / index.js

exports.addAdminRole = functions.https.onCall((data, context) => {
    // get user
    return admin.auth().getUserByEmail(data.email).then(user => {
        // if not already (admin)
        if(user.customClaims && (user.customClaims).admin === true) {
            return;
        }
        // add custom claim (admin)
        return admin.auth().setCustomUserClaims(user.uid, {
            admin: true
        });
    }).then(() => {
        return {
            message: `Bravo : ${data.email} fait partie de l'équipe Admins`
        }
    }).catch(err => {
        return err;
    });
});

упрощенная функция:

exports.addAdminRoleTest = functions.https.onCall(data => {
    console.log("parse data : "+JSON.parse(data));
    return (
        JSON.parse(data)
    );
});

adminScreen.js

function httpAddAdminRole() {

    const initRequest = {
        method: 'POST',
        headers: {
            Accept: 'application/json',
            'Content-Type': 'application/json'
        },
        body:JSON.stringify({
            email: 'dev@test.com'
        })
    }

    console.log(initRequest);

    return fetch('https://us-central1-my-project.cloudfunctions.net/addAdminRole', initRequest)
      .catch(err => console.log(err))
      .then(res => res.json())
      .then(parsedRes => {
          console.log(parsedRes);
      });
}

1 Ответ

0 голосов
/ 03 февраля 2019

В конце концов, это было в основном знание JSON, по которому я скучал:

functions / index.js

exports.addAdminRole = functions.https.onCall((data, context) => {
    const dataParsed = JSON.parse(data);

    // get user
    return admin.auth().getUserByEmail(dataParsed.email).then(user => {
        // if not already (admin)
        if(user.customClaims && (user.customClaims).admin === true) {
            console.log(dataParsed.email + " is already an Admin");
            return;
        }
        // add custom claim (admin)
        return admin.auth().setCustomUserClaims(user.uid, {
            admin: true
        });
    }).then(() => {
        return {
            message: `Bravo : ${dataParsed.email} is now an Admin`
        }
    }).catch(err => {
        return err;
    });
});

adminScreen.js

function httpAddAdminRole(mail) {

    const initRequest = {
        method: 'POST',
        headers: {
            Accept: 'application/json',
            'Content-Type': 'application/json'
        },
        body:JSON.stringify({ 
            data:JSON.stringify({
                email: mail
            })
        })
    }

    console.log(initRequest);

    return fetch('https://us-central1-my-project.cloudfunctions.net/addAdminRole', initRequest)
      .catch(err => console.log(err))
      .then(res => res.json())
      .then(parsedRes => {
          console.log(parsedRes);
      });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...