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

使用Next-Auth+Firebase Adapter实现认证时的GRPC流连接错误解决

Next-Auth 结合 Firebase 认证后加载卡住,GRPC 连接失败

我用 Next-Auth 搭配 Firebase 作为后端实现用户认证,以下是我的 [...nextauth].js 代码:

import NextAuth from "next-auth/next"
import GoogleProvider from "next-auth/providers/google"
import { FirestoreAdapter } from "@next-auth/firebase-adapter"

export default NextAuth({
  providers: [
    GoogleProvider({
      clientId: process.env.GOOGLE_ID,
      clientSecret: process.env.GOOGLE_SECRET,
    }),
  ],
  adapter: FirestoreAdapter({
    apiKey: process.env.FIREBASE_API_KEY,
    appId: process.env.FIREBASE_APP_ID,
    authDomain: process.env.FIREBASE_AUTH_DOMAIN,
    databaseURL: process.env.FIREBASE_DATABASE_URL,
    projectId: process.env.FIREBASE_PROJECT_ID,
    storageBucket: process.env.FIREBASE_STORAGE_BUCKET,
    messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID,
    emulator: {},
  }),
})

点击谷歌登录后,页面一直处于加载状态,终端抛出错误:

Connection GRPC Stream error. Code: 14 Message: 14 UNAVAILABLE: No Connection established


解决办法

  • 移除空的 emulator 配置
    代码里设置了 emulator: {} 但未指定模拟器地址,会导致 NextAuth 尝试连接本地 Firestore 模拟器却失败。如果没使用模拟器,直接删除该配置项:

    adapter: FirestoreAdapter({
      apiKey: process.env.FIREBASE_API_KEY,
      appId: process.env.FIREBASE_APP_ID,
      authDomain: process.env.FIREBASE_AUTH_DOMAIN,
      databaseURL: process.env.FIREBASE_DATABASE_URL,
      projectId: process.env.FIREBASE_PROJECT_ID,
      storageBucket: process.env.FIREBASE_STORAGE_BUCKET,
      messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID,
      // 删除 emulator: {}
    }),
    
  • 检查 Firestore 权限规则
    默认的 Firestore 安全规则会阻止未认证的写入操作,而 NextAuth 创建用户时需要写入权限。可临时设置宽松规则测试(测试完成后务必改回严格规则):

    rules_version = '2';
    service cloud.firestore {
      match /databases/{database}/documents {
        match /{document=**} {
          allow read, write: if true;
        }
      }
    }
    
  • 验证环境变量正确性
    确认所有 Firebase 相关环境变量(如 FIREBASE_PROJECT_ID、FIREBASE_API_KEY 等)无拼写错误或遗漏,可临时在代码中打印变量值排查:

    console.log(process.env.FIREBASE_PROJECT_ID);
    
  • 排查网络连接问题
    GRPC 错误多与网络相关,确保开发环境能正常访问 Firebase 服务,未被防火墙或代理拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:20:52