NodeJS 从firebase云函数中检索响应时出错

nwlls2ji  于 2023-05-17  发布在  Node.js
关注(0)|答案(2)|浏览(98)

我是Firebase Cloud Functions的初学者。我使用云函数的主要动机是身份验证。
index.js(在functions文件夹中)

var admin = require("firebase-admin");
    const functions = require('firebase-functions');
    const createuser = require('./funs/create_user');
    var serviceAccount = require('./funs/serviceAccount.json');

    admin.initializeApp({
       credential: admin.credential.cert(serviceAccount),
       databaseURL: "//Given by Firebase"
    });

    exports.createuser = functions.https.onRequest(createuser);

create_user.js

const admin = require("firebase-admin");
    module.exports = function (req,res) {

       if(!req.body.phone)
       {
           return res.status(422).send({error: "Bad Input"});
       }

       const phone = String(req.body.phone).replace(/[^\d]/g,"");

       admin.auth().createUser({ uid: phone })
       .then((user) => res.send(user))
       .catch((err)=>res.status(422).send({error:err}));

       //return 1;

     }

当我使用Postman调用函数时,我将数据传递给云函数:

{
         "phone": "1212121212"         
      }

我得到的响应是“Bad Input”,正如if语句中所指定的。
移除if条件后,我得到以下响应

{
    "error": {
    "code": "auth/invalid-uid",
    "message": "The uid must be a non-empty string with at most 128 
    characters."
  }
 }

gtlvzcf8

gtlvzcf81#

你的云函数代码是有效的,我已经成功地在Firebase项目中测试了它,使用Axios库,如下所示,在HTML页面中。

axios.post('https://us-central1-xxxxxxxx.cloudfunctions.net/testPhoneNbr', {
    phone: '0471214365'
})
    .then(function (response) {
        console.log(response);
    })
    .catch(function (error) {
        console.log(error);
    });

已正确创建用户。
问题可能来自您调用HTTPS云函数的方式。

jv4diomz

jv4diomz2#

请更改类型=“文本”到类型=“JSON”在 Postman 当击中POST请求

相关问题