我正在尝试创建具有自定义声明的用户。我正在使用Firebase云函数。问题是,当我创建(注册)用户时,onCreate未触发。我正在遵循Google提供的此教程。https://firebase.google.com/docs/auth/admin/custom-claims * 我部署了函数,区域为us-central 1 *
云函数版本:
firebase-admin": "^8.9.0
firebase-functions": "^3.3.0
我使用Vue JS作为前端
我的函数/Index. js
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.ProccessSignUp = functions.auth.user().onCreate(async (user) =>{
console.log("Email"+user.email);
if (user.email){
const customClaims = {
admin:true
};
return admin.auth().setCustomUserClaims(user.uid,customClaims)
.then(() =>{
const metadataRef = admin.database().ref('metadata/' +user.uid);
return metadataRef.set({refeshTime:new Date().getTime()})
}).catch(err =>{
console.log(err.message)
})
}
});
我的电子邮件和密码登录
userSignUp({dispatch},payload){
firebase.auth().createUserWithEmailAndPassword(payload.email, payload.password)
.then(user =>{
user.user.sendEmailVerification()
.then(() =>
alert('Your account has been created! Please, verify your account'),
dispatch('userSignOut'),
).catch(err =>{
console.log(err.message)
})
}).catch(err =>{
console.log(err.message)
})
},
o身份验证状态已更改
router.beforeEach(async (to, from, next) => {
const user = await new Promise((resolve) => {
firebase.auth().onAuthStateChanged(async user => {
await store.dispatch("autoSignIn", user);
resolve(user)
});
});
const requiresAuth = to.matched.some(record => record.meta.requiresAuth)
if (requiresAuth) {
if (!user){
next(false)
}else {
if (user.emailVerified){
next();
}else {
alert('Please verify your account')
await store.dispatch("userSignOut", user);
}
}
} else {
next()
}
});
2条答案
按热度按时间ztigrdn81#
正如doc中所解释的,使用云函数,您可以“从函数发出日志行,使用标准JavaScript日志调用,如
console.log
和console.error
“。然后可以在Firebase控制台、Stackdriver Logging UI或通过Firebase命令行工具查看Cloud Functions日志。
因此,您应该能够通过查看(例如,Firebase控制台)来确认Cloud Function是否正确运行。
sqxo8psd2#
我在本地运行云函数时也遇到了同样的情况。我的
user().onCreate()
触发函数也没有触发。我尝试了很多东西,但一切看起来都很好。最后我更新了我的firebase工具,以最新版本运行这个命令,它开始工作的魅力。
希望这能帮到什么人。