迁移到 Go Admin SDK v4

从 4.0.0 版开始,Go 版 Firebase Admin SDK 已选择使用 Go 模块。此外,错误处理和语义方面发生了重大更改。

安装更改

依照模块最佳做法,SDK 的主要版本已附加到软件包名称后。此更改导致以下软件包名称更新:

  • firebase.google.com/go → firebase.google.com/go/v4
  • firebase.google.com/go/auth → firebase.google.com/go/v4/auth
  • firebase.google.com/go/db → firebase.google.com/go/v4/db
  • firebase.google.com/go/iid → firebase.google.com/go/v4/iid
  • firebase.google.com/go/messaging → firebase.google.com/go/v4/messaging

已在使用模块的开发者

使用有版本控制的软件包名称来安装最新版 SDK。

# Install the latest version:
go install firebase.google.com/go/v4@latest

# Or install a specific version:
go install firebase.google.com/go/v4@4.13.0

导入 SDK 时,必须在源代码中使用相同的有版本控制的软件包名称。

package helloworld

import (
        "firebase.google.com/go/v4"
        "firebase.google.com/go/v4/auth"
        "firebase.google.com/go/v4/messaging"
)

如需安装早期版本,请使用带有明确版本限定符的旧版(没有版本控制)软件包名称。

# Notice the @v3 suffix.
# This instructs Go tools to fetch the latest v3.x release of the SDK.
go get firebase.google.com/go@v3

当前未使用模块的开发者

尚未选择使用模块的开发者可继续使用没有版本控制的软件包名称来安装 SDK。

go get firebase.google.com/go

但请注意,这会提取最新版 SDK(v4 或更高版本),其中包含其他重大 API 更改。

常规错误处理更改

v4 SDK 引入了一个新的 errorutils 软件包,它提供用于处理平台级错误情况的函数。如果后端服务出错,您可以调用新函数 errorutils.HTTPResponse() 来访问原始的错误响应。您可以使用此软件包中的函数处理 SDK 中任何 API 返回的错误。

Authentication API 更改

  • 新增了可与 VerifyIDToken()VerifySessionCookie() API 结合使用的错误处理函数:
    • IsIDTokenInvalid()
    • IsIDTokenExpired()
    • IsSessionCookieInvalid()
    • IsSessionCookieExpired()
    • IsCertificateFetchFailed()
  • 已弃用:
    • IsProjectNotFound()
    • IsUnknown()
    • IsInsufficientPermission()
    • IsInvalidEmail()

FCM API 更改

  • 已将类型 messaging.WebpushFCMOptions 重命名为 messaging.WebpushFcmOptions
  • 新增:
    • IsThirdPartyAuthError()
    • IsQuotaExceeded()
    • IsSenderIDMismatch()
    • IsUnregistered()
    • IsUnavailable()
  • 已弃用:
    • IsInvalidAPNSCredentials()
    • IsMessageRateExceeded()
    • IsMismatchedCredential()
    • IsRegistrationTokenNotRegistered()
    • IsServerUnavailable()
    • IsTooManyTopics()
    • IsUnknown()

IID API 更改

iid 软件包中当前提供的所有错误处理函数现已被弃用。请改用 errorutils 软件包中提供的相应错误处理函数。