首页 > 解决方案 > 代码:'auth/argument-error',消息:'属性参数必须是非空对象。'

问题描述

Firebase 云功能,我会使用电子邮件注册返回 token,但出现如下错误:

errorInfo: {[enter image description here][1]
     code: 'auth/argument-error',
     message: 'Properties argument must be a non-null object.'
   },

我的代码:

const { validateSignupData } = require("../util/validators");
const { admin, db } = require("../util/admin");

exports.postSignUp = (req, res) => {
  const newUser = {
    email: req.body.email,
    password: req.body.password,
    confirmPassword: req.body.confirmPassword,
    handle: req.body.handle,
  };
  const { valid, errors } = validateSignupData(newUser);
  if (!valid) return res.status(400).json(errors);

  let token, userId;
  db.doc(`/users/${newUser.handle}`)
    .get()
    .then((doc) => {
      if (doc.exists) {
        return res.status(400).json({ handle: "this handle is already taken" });
      } else {
        return admin.auth().createUser(newUser.email, newUser.password);
      }
    })
    .then((data) => {
      userId = data.user.uid;
      return data.user.getIdToken();
    })
    .then((idToken) => {
      token = idToken;
      const userCredentials = {
        handle: newUser.handle,
        email: newUser.email,
        createdAt: new Date().toISOString(),
        userId,
      };
      return db.doc(`/users/${newUser.handle}`).set(userCredentials);
    })
    .then(() => {
      return res.status(201).json({ token });
    })
    .catch((err) => {
      console.error(err);
      if (err.code === "auth/email-already-in-use") {
        return res.status(400).json({ email: "Email is already is use" });
      } else {
        return res
          .status(500)
          .json({ general: "Something went wrong, please try again" });
      }
    });
};

在此处输入图像描述

标签: firebasefirebase-authenticationgoogle-cloud-functions

解决方案


推荐阅读