javascript - Firebasefunctions.auth.user().onCreate不触发

标签 javascript firebase firebase-realtime-database firebase-authentication google-cloud-functions

我正在尝试使用自定义声明创建用户。我正在使用 Firebase 云功能。问题是,当我创建(注册)用户时,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()

    }
});


最佳答案

doc 中所述,使用 Cloud Functions,您可以“从函数中发出日志行,使用标准 JavaScript 日志记录调用,例如 console.logconsole.error”。

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

因此,您应该能够通过查看 Firebase 控制台等来确认您的 Cloud Function 是否正确运行。

关于javascript - Firebasefunctions.auth.user().onCreate不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61152967/

相关文章:

javascript - Angular:无法在 TransitionAnimationEngine 读取未定义的属性 'insertNode'

android - Firebase Storage 生成的 URL 不允许访问该文件

Android - ListView 将用户显示为 null

android - Firebase身份验证和数据库链接

javascript - 将多个键映射到 Javascript 哈希中的相同值

javascript - 如何使 mp3 文件在所有页面上连续播放?

javascript - 在javascript中手动对数组进行排序

android - 为什么在调用 sendEmailVerification() 方法(Firebase Auth 的方法)时对象没有插入到 firebase 数据库中?

android - Firebase 缓存破坏了检索到的 child 的顺序

java - 如何将数组转换为列表而不是 Firebase?