【发布时间】:2020-03-05 06:33:20
【问题描述】:
我正在尝试在我的 vue 项目中添加自定义用户声明,以便我可以更改用户可以看到/执行的操作。它的工作方式是我有一个输入字段,我将输入来自用户的电子邮件,它会向它添加一个管理员声明。当我去测试它时,我得到了一个带有错误“errorInfo:Object { code:“auth/invalid-email”,消息:“电子邮件地址格式不正确。”}
我已经尝试查找代码中的问题,但从我找到的示例来看,代码似乎是正确的。
我正在提交一个 test@test.com 电子邮件,我有一个示例,我检查了 vue.js 开发工具,我正在通过 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>
【问题讨论】:
标签: javascript firebase vue.js google-cloud-functions