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

使用Firebase Hosting API创建自定义域名失败,求Go库及REST解决方案

Firebase Hosting自定义域名自动化创建问题解决(Go库+REST方案)

错误原因分析

你遇到的400: Domain not associated with project错误,核心问题是目标域名test1.example.com还没完成Firebase项目的归属验证。Firebase要求自定义域名必须先通过验证(证明你拥有该域名),才能绑定到Hosting站点,直接调用创建接口会触发这个前置校验错误。


Go开发库修复方案

1. 前置步骤:完成域名验证

你需要先将域名添加到项目的验证列表,并完成DNS配置(添加TXT/CNAME记录)。验证完成后,域名才会被标记为与项目关联。

2. 修正后的代码示例

替换真实的项目ID和站点ID,先校验验证状态再执行创建:

package main

import (
    "context"
    "log"
    "os"

    "google.golang.org/api/firebasehosting/v1"
    "google.golang.org/api/googleapi"
)

func main() {
    ctx := context.Background()
    // 初始化服务,不要忽略错误
    firebase, err := firebasehosting.NewService(ctx)
    if err != nil {
        log.Fatalf("创建Firebase Hosting服务失败: %v", err)
    }

    projectID := "你的真实项目ID"
    siteID := "dashboard-v1-staging"
    domainName := "test1.example.com"
    parentResource := "projects/" + projectID + "/sites/" + siteID

    // 先检查域名验证状态
    verifyReq := &firebasehosting.VerifyDomainRequest{DomainName: domainName}
    verifyResp, err := firebase.Projects.Sites.Domains.Verify(parentResource, verifyReq).Do()
    if err != nil {
        log.Fatalf("域名验证状态检查失败: %v", err)
    }

    // 未验证则提示添加DNS记录
    if verifyResp.Status != "VERIFIED" {
        log.Printf("域名%s未验证,请添加以下DNS记录:%+v", domainName, verifyResp.DnsRecords)
        os.Exit(1)
    }

    // 创建域名关联
    domain := &firebasehosting.Domain{
        DomainName: domainName,
        Site:       parentResource,
    }
    _, err = firebase.Projects.Sites.Domains.Create(parentResource, domain).Do()
    if err != nil {
        if !googleapi.IsNotModified(err) {
            log.Fatalf("创建域名关联失败: %v", err)
        }
    }

    log.Printf("域名%s已成功绑定到站点%s", domainName, siteID)
}

纯REST接口替代方案

1. 验证域名归属

  • 请求方法:POST
  • 请求URL:https://firebasehosting.googleapis.com/v1/projects/{project-id}/sites/{site-id}/domains:verify
  • 请求体:
    {
        "domainName": "test1.example.com"
    }
    
  • 响应会返回需要配置的DNS记录,完成配置后重复调用该接口,直到返回的status字段为VERIFIED。

2. 创建域名关联

  • 请求方法:POST
  • 请求URL:https://firebasehosting.googleapis.com/v1/projects/{project-id}/sites/{site-id}/domains
  • 请求体:
    {
        "domainName": "test1.example.com",
        "site": "projects/{project-id}/sites/{site-id}"
    }
    
  • 注意:请求需携带有效的Google OAuth2令牌,令牌需拥有firebasehosting.domains.create和firebasehosting.domains.verify权限。

额外注意事项

  • 确保操作账号拥有Firebase Hosting Admin角色权限。
  • 父域名验证通过后,其子域名会自动继承验证状态(比如example.com验证后,test1.example.com无需单独验证)。
  • 域名验证状态绑定到具体项目,同一个域名可验证到多个项目,但每个项目需单独完成验证流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:20:42