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

Golang集成Firebase Auth Emulator报错:Project not found 求解决

解决Go Admin SDK连接Firebase Auth模拟器时的PROJECT_NOT_FOUND错误

Go的Firebase Admin SDK不会像Node.js版本那样自动识别Auth模拟器,需要显式配置端点才能对接本地服务,这就是你遇到Firestore正常但Auth报错的核心原因。以下是具体解决步骤:

1. 确认模拟器配置与启动参数

  • 检查firebase.json中Auth模拟器的端口配置(默认端口为9099):
{
  "emulators": {
    "auth": {
      "port": 9099
    },
    "firestore": {
      "port": 8080
    }
  }
}
  • 启动模拟器时必须指定项目ID,保持与代码中一致:
firebase emulators:start --project test

2. 在Go代码中显式配置Auth模拟器端点

初始化Auth客户端后,手动设置其Endpoint属性指向本地模拟器地址:

package main

import (
    "context"
    "fmt"
    "firebase.google.com/go"
    "firebase.google.com/go/auth"
)

func main() {
    ctx := context.Background()

    // 初始化Firebase App,仅指定项目ID,无需生产环境服务账号密钥
    app, err := firebase.NewApp(ctx, &firebase.Config{ProjectID: "test"})
    if err != nil {
        panic(fmt.Sprintf("初始化App失败: %v", err))
    }

    // 获取Auth客户端
    authClient, err := app.Auth(ctx)
    if err != nil {
        panic(fmt.Sprintf("获取Auth客户端失败: %v", err))
    }

    // 关键:设置Auth模拟器端点(根据你的实际端口调整)
    authClient.Endpoint = "http://localhost:9099"

    // 测试创建用户
    userParams := &auth.UserToCreate{Email: "test@example.com", Password: "password123"}
    user, err := authClient.CreateUser(ctx, userParams)
    if err != nil {
        panic(fmt.Sprintf("创建用户失败: %v", err))
    }
    fmt.Printf("创建用户成功,UID: %s\n", user.UID)
}

3. 关键注意事项

  • 不要在初始化App时传入生产环境的服务账号密钥(option.WithCredentialsFile),否则SDK会优先访问公网API而非本地模拟器。
  • 若想用环境变量统一配置,可在启动Go服务前设置:
export FIREBASE_AUTH_EMULATOR_HOST=localhost:9099

但部分版本的Go SDK不会自动读取该变量,显式设置authClient.Endpoint是更可靠的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:55:18