Firebase函数.auth.user(). on创建无触发

cl25kdpy  于 2022-12-24  发布在  其他
关注(0)|答案(2)|浏览(120)

我正在尝试创建具有自定义声明的用户。我正在使用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()

    }
});
ztigrdn8

ztigrdn81#

正如doc中所解释的,使用云函数,您可以“从函数发出日志行,使用标准JavaScript日志调用,如console.logconsole.error“。
然后可以在Firebase控制台、Stackdriver Logging UI或通过Firebase命令行工具查看Cloud Functions日志。
因此,您应该能够通过查看(例如,Firebase控制台)来确认Cloud Function是否正确运行。

sqxo8psd

sqxo8psd2#

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

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

我尝试了很多东西,但一切看起来都很好。最后我更新了我的firebase工具,以最新版本运行这个命令,它开始工作的魅力。

npm install -g firebase-tools@latest

希望这能帮到什么人。

相关问题