如何使用Nuxt、Nuxt-VueFire和VueFire正确访问firebase auth功能?

vngu2lb8  于 2023-05-01  发布在  其他
关注(0)|答案(2)|浏览(111)

我正在使用Nuxt、vuifire和nuxt-vuifire尝试在Web应用程序中启用电子邮件和密码验证。我已经安装了所有的软件包,并且能够访问firebase中未受保护的路径,一切都按预期工作。然而,当尝试访问firebase auth sdk时,我没有得到一个带有处理身份验证情况的属性的auth对象。我已经将nuxt配置为使用firebase身份验证:

export default defineNuxtConfig({
    ...
    modules: [
        'nuxt-vuefire'
    ],
    vuefire: {
        auth: true,
        config: {
            apiKey: "...",
            authDomain: "...",
            projectId: "...",
            storageBucket: "...",
            messagingSenderId: "...",
            appId: "...",
            measurementId: "..."
        },
        admin: {
            serviceAccount: '...json',
        }
    }
}

然后我尝试在登录中使用useFirebaseAuth()。pages目录中的vue组件如下:

<script setup>
const auth = useFirebaseAuth()
const email = ref('')
const password = ref('')

const login = () => auth.signInWithEmailAndPassword(email, password)
const create = () => auth.createUserWithEmailAndPassword(email, password)
</script>

当点击登录或注册,我得到的错误
signInWithEmailAndPassword不是函数
我找不到任何文件说明我遗漏了哪一步。我错过了什么?

gojuced7

gojuced71#

因此,代码存在几个问题。
1.没有auth这样的方法。signInWithEmailAndPassword对于firebase 9,你通过signInWithEmailAndPassword(auth,email,password)来做,看起来你正在使用新版本。请参阅firebase docs
1.电子邮件,密码都是参考,所以电子邮件。值、密码。价值

  1. useFirebaseAuth()在服务器上返回null,所以要小心。这不是一个问题,但因为你正在使用JavaScript,你可能会错过它。
    请使用Typescript,这些问题本可以避免。
rta7y2nd

rta7y2nd2#

我也遇到了这个问题。在我看来,vuefire必须提供例如signInWithEmailAndPassword的功能-但似乎他们没有。
所以我们必须在vuefire导入之外使用“plain firebase”。有点奇怪。.

相关问题