React native Firebase云函数调用:错误:对象消息:";“错误请求”;地位:“1”;无效的“U参数”;

React native Firebase云函数调用:错误:对象消息:";“错误请求”;地位:“1”;无效的“U参数”;,react-native,google-cloud-functions,React Native,Google Cloud Functions,首先,我与react native合作 我想在我的项目上使用自定义声明,因为它似乎适合我希望在我的应用程序上使用的角色分布 在按照文档设置我的应用程序后,我成功地创建了一些函数 但是,问题是,当我试图通过获取端点来调用函数时,总是会出现以下错误: 在控制台中 错误 : 对象 消息 : “错误请求” 地位 : “无效的参数” 在firebase控制台中 我找不到任何答案,除了我从回执中发送了错误的信息,但我不明白为什么 我甚至试图简化我的函数,只是为了得到我发送的数据,但我遇到了完全相同的错误 在

首先,我与react native合作

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

在按照文档设置我的应用程序后,我成功地创建了一些函数

但是,问题是,当我试图通过获取端点来调用函数时,总是会出现以下错误:

在控制台中

错误 : 对象 消息 : “错误请求” 地位 : “无效的参数”

在firebase控制台中

我找不到任何答案,除了我从回执中发送了错误的信息,但我不明白为什么

我甚至试图简化我的函数,只是为了得到我发送的数据,但我遇到了完全相同的错误

在下面找到my cloud函数和调用方法:

函数/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;
    });
});
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);
      });
}
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;
    });
});
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);
      });
}
简化功能:

exports.addAdminRoleTest = functions.https.onCall(data => {
    console.log("parse data : "+JSON.parse(data));
    return (
        JSON.parse(data)
    );
});
adminScreen.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;
    });
});
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);
      });
}
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;
    });
});
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);
      });
}

最后,我想的主要是json知识

我的身体应该包含数据

以下是我得到的答案:

函数/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;
    });
});
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);
      });
}
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;
    });
});
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);
      });
}
adminScreen.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;
    });
});
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);
      });
}
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;
    });
});
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);
      });
}