Javascript 添加自定义索赔返回错误身份验证/无效电子邮件:电子邮件地址的格式与Firebase函数不正确
我正在尝试在我的vue项目中添加自定义用户声明,以便我可以更改用户可以看到/执行的内容。它的工作方式是我有一个输入字段,我将输入一封来自用户的电子邮件,它将添加一个管理员声明。当我去测试它时,我得到了一个返回的对象,错误是“errorInfo:object{code:“auth/invalid email”,消息是:“电子邮件地址格式不正确。”} 我已经试着寻找代码中的错误,但从我发现的示例来看,代码似乎是正确的 我正在提交一份报告test@test.com以我收到的电子邮件为例,我检查了vue.js devtools,并传递了一个字符串test@test.com 下面是我的index.js函数代码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
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);
});
}
}
修正了。非常感谢你最近的所有回答。我可能需要提高我的文档阅读技能。