火力地堡云函数调用:错误:对象消息:“错误的请求”状态:“INVALID_ARGUMENT”

问题描述 投票:1回答:1

首先,我对工作的反应,原生

我想用自定义声明对我的项目,因为它似乎适合该角色分配我希望在我的应用程序中使用。

设置我的应用程序的文档以下后,我打造一些功能成功

但是,这里的东西,当我尝试通过取得终点,我总是得到这个错误时调用的函数:

在控制台

错误:对象消息:“错误的请求”状态:“INVALID_ARGUMENT”

在火力控制台

   addAdminRoleTest    Request body is missing data. { email: '[email protected]' }

我找不到,只是我从错误发送的信息获取我的任何问题的答案,但我不明白为什么。

我甚至想只是简化我的函数来得到我发送的数据,但我有完全相同的错误

在下面找到我的云功能和调用的方法:

功能/ 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: '[email protected]'
        })
    }

    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);
      });
}
react-native google-cloud-functions
1个回答
2
投票

这到底是想念我主要是JSON知识

我的身体应该已经包括数据

这是我来到了答案:

功能/ 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);
      });
}
© www.soinside.com 2019 - 2024. All rights reserved.