Firebase函数.auth.user().onCreate不触发



我正在尝试创建具有自定义声明的用户。我正在使用Firebase Cloud函数。问题是,当我创建(注册(用户时,onCreate不会触发。我正在遵循谷歌提供的这个教程。https://firebase.google.com/docs/auth/admin/custom-claims我部署了我的功能,区域是us-central1

云功能版本:

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)
})
},

oAuthStateChanged

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()
}
});

如文档中所述,使用Cloud函数,您可以"从函数中发出日志行,使用标准的JavaScript日志记录调用,如console.logconsole.error"。

然后,可以在Firebase控制台、Stackdriver Logging UI或通过Firebase命令行工具查看Cloud Functions日志。

因此,例如,您应该能够通过查看Firebase控制台来确认您的云功能是否正确运行。

我在本地运行云功能时也遇到了同样的情况。我的user().onCreate()触发功能也没有触发。

export const addNewUser = auth
.user()
.onCreate((user) => {
// Do something
})

我试了很多方法,但一切都很好。最后,我通过运行这个命令将我的firebase工具更新到了最新版本,它开始发挥作用。

npm install -g firebase-tools@latest

希望这能帮助到别人。

如果使用Custom Token登录用户,则不会触发functions.auth.user().onCreate

当用户首次使用自定义令牌登录时,不会触发云功能事件。

https://firebase.google.com/docs/functions/auth-events#:~:text=A%20Cloud%20Functions%20event%20is%20not%20triggered%20when%20a%20user%20sign%20in%20for%20the%20first%20time%20using%20a+20custom%20token

相关内容

  • 没有找到相关文章

最新更新