GetUserByProviderAccountIdError 与 Google 和 Firebase 适配器 Next Auth

Posted

技术标签:

【中文标题】GetUserByProviderAccountIdError 与 Google 和 Firebase 适配器 Next Auth【英文标题】:GetUserByProviderAccountIdError with Google & Firebase Adapter Next Auth 【发布时间】:2021-11-23 02:41:03 【问题描述】:

我试图在 Next Auth 中将 Google Provider 与 Firebase 适配器一起使用,一旦我选择了一个帐户,我就会收到以下错误:

我正在使用 Firebase 9

TypeError: client.collection is not a function
        at getUserByProviderAccountId (C:\Users\veer4\Documents\Hridaya\Learning\Programming\React JS\google-docs\node_modules\@next-auth\firebase-adapter\dist\index.js:49:26)       
        at acc.<computed> (C:\Users\veer4\Documents\Hridaya\Learning\Programming\React JS\google-docs\node_modules\next-auth\dist\adapters\error-handler.js:19:22)
        at Object.callback (C:\Users\veer4\Documents\Hridaya\Learning\Programming\React JS\google-docs\node_modules\next-auth\dist\server\routes\callback.js:72:51)
        at runMicrotasks (<anonymous>)
        at processTicksAndRejections (internal/process/task_queues.js:93:5) 
      name: 'GetUserByProviderAccountIdError'
    

我的页面/api/[...nextauth].js

import NextAuth from "next-auth"
import GoogleProvider from 'next-auth/providers/google'
import  db  from "../../../firebase-config"
import  FirebaseAdapter  from "@next-auth/firebase-adapter"

export default NextAuth(
    // Configure one or more authentication providers
    providers: [
        GoogleProvider(
            clientId: process.env.GOOGLE_CLIENT_ID,
            clientSecret: process.env.GOOGLE_CLIENT_SECRET,
        ),
    ],
    adapter: FirebaseAdapter(db),
)

【问题讨论】:

可能与问题无关,但next-auth 配置不应该在/pages/api/auth/[...nextauth].js 下吗? 是的,它在 auth 文件夹中,我在问题中写错了 【参考方案1】:

对于遇到相同问题的任何人,如果用户具有读写权限,请首先检查您的 Firestore 规则。 read more

【讨论】:

我试过了,但没有运气,它仍然显示同样的错误【参考方案2】:

const firestore = (
  firebase.apps[0] ?? firebase.initializeApp(/* here you should pass your config object */)
).firestore()

您的db 应该与firestore const 完全一样,我不确定它是否相同,如果看起来不是这样,也许您应该更新您的问题。

https://next-auth.js.org/adapters/firebase

【讨论】:

对于 Firebase 9 ? 我有类似的,但有点不同 请也将其添加到您的问题中,也许那里有问题。 const app = !getApps().length ? initializeApp(firebaseConfig) : FirebaseApp const db = getFirestore(); 这样对吗?

以上是关于GetUserByProviderAccountIdError 与 Google 和 Firebase 适配器 Next Auth的主要内容,如果未能解决你的问题,请参考以下文章