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
相关产品推荐
相关产品推荐

