Javascript 添加自定义索赔返回错误身份验证/无效电子邮件:电子邮件地址的格式与Firebase函数不正确

Javascript 添加自定义索赔返回错误身份验证/无效电子邮件:电子邮件地址的格式与Firebase函数不正确,javascript,firebase,vue.js,google-cloud-functions,Javascript,Firebase,Vue.js,Google Cloud Functions,我正在尝试在我的vue项目中添加自定义用户声明,以便我可以更改用户可以看到/执行的内容。它的工作方式是我有一个输入字段,我将输入一封来自用户的电子邮件,它将添加一个管理员声明。当我去测试它时,我得到了一个返回的对象,错误是“errorInfo:object{code:“auth/invalid email”,消息是:“电子邮件地址格式不正确。”} 我已经试着寻找代码中的错误,但从我发现的示例来看,代码似乎是正确的 我正在提交一份报告test@test.com以我收到的电子邮件为例,我检查了vue

我正在尝试在我的vue项目中添加自定义用户声明,以便我可以更改用户可以看到/执行的内容。它的工作方式是我有一个输入字段,我将输入一封来自用户的电子邮件,它将添加一个管理员声明。当我去测试它时,我得到了一个返回的对象,错误是“errorInfo:object{code:“auth/invalid email”,消息是:“电子邮件地址格式不正确。”}

我已经试着寻找代码中的错误,但从我发现的示例来看,代码似乎是正确的

我正在提交一份报告test@test.com以我收到的电子邮件为例,我检查了vue.js devtools,并传递了一个字符串test@test.com

下面是我的index.js函数代码

const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();

exports.addAdminRole = functions.https.onCall(async (data, context) => {
  //get user and add custom claim (admin)
  try {
    const user = await admin.auth().getUserByEmail(data.email);
    await admin.auth().setCustomUserClaims(user.uid, {
      admin: true
    });
    return {
      message: `Success! has been made admin`
    };
  } catch (err) {
    return err;
  }
});
这是我调用函数的vue组件

<template>
  <div class="home">
    <h3>Welcome to Site</h3>

    <h3>Add user to admin</h3>
    <div class="row">
      <form @submit.prevent="addAdmin()" class="col s12">
        <div class="row">
          <div class="input-field col s12">
            <input type="email" v-model="email" required />
            <label>Email</label>
          </div>
        </div>
        <button type="submit" class="btn">Submit</button>
        <router-link to="/members" class="btn grey">Cancel</router-link>
      </form>
    </div>
  </div>
</template>

<script>
import { db, fc } from "../data/firebaseInit";
export default {
  name: "home",
  data() {
    return {
      email: null
    };
  },
  methods: {
    addAdmin() {
      const addAdminRole = fc.httpsCallable("addAdminRole");
      addAdminRole(this.email).then(result => {
        console.log(result);
      });
    }
  }
};
</script>

欢迎来到我们的网站
将用户添加到管理员
电子邮件
提交
取消
从“./data/firebaseInit”导入{db,fc}”;
导出默认值{
姓名:“家”,
数据(){
返回{
电子邮件:空
};
},
方法:{
addAdmin(){
const addAdminRole=fc.httpscalable(“addAdminRole”);
addAdminRole(this.email)。然后(result=>{
控制台日志(结果);
});
}
}
};

您需要使用对象而不是“简单”JavaScript字符串调用可调用的云函数

因此,以下内容将解决您的问题:

  methods: {
    addAdmin() {
      const addAdminRole = fnct.httpsCallable("addAdminRole");
      addAdminRole( { email: this.email } ).then(result => {
        console.log(result);
      });
    }
  }

修正了。非常感谢你最近的所有回答。我可能需要提高我的文档阅读技能。