You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next Auth用Google Provider搭配Firebase9报GetUserByProviderAccountIdError错误

错误原因

你当前使用的Firebase 9采用模块化API,而@next-auth/firebase-adapter默认适配Firebase 8的命名空间式API。你传入适配器的db是模块化Firestore实例,没有旧版API自带的collection实例方法,因此适配器内部调用client.collection时触发类型错误。

修复方案

有两种可行修复方案,可根据你的项目偏好选择:

方案1:使用Firebase 9兼容层(改动最小)

修改firebase-config.js的初始化逻辑,使用compat兼容包导出兼容旧API的Firestore实例:

// firebase-config.js
import { initializeApp } from "firebase/compat/app";
import "firebase/compat/firestore";

const firebaseConfig = {
  // 替换为你自己的Firebase配置项
};

const app = initializeApp(firebaseConfig);
const db = app.firestore();
export { db };

修改完成后原有的[...nextauth].js配置不需要改动,直接运行即可。

方案2:适配Firebase 9模块化API(无兼容层,符合新版规范)

不需要修改Firebase配置,直接调整[...nextauth].js的适配器传入参数,将Firebase 9模块化的Firestore操作方法一并传入适配器:

// pages/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"
// 导入Firebase 9模块化Firestore方法
import { collection, doc, getDoc, getDocs, addDoc, updateDoc, deleteDoc, query, where } from "firebase/firestore"

export default NextAuth({
    providers: [
        GoogleProvider({
            clientId: process.env.GOOGLE_CLIENT_ID,
            clientSecret: process.env.GOOGLE_CLIENT_SECRET,
        }),
    ],
    adapter: FirebaseAdapter({
        db,
        collection,
        doc,
        getDoc,
        getDocs,
        addDoc,
        updateDoc,
        deleteDoc,
        query,
        where
    }),
})

内容的提问来源于stack exchange,提问作者Hridaya Agrawal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 18:57:03