遷移至 Go Admin SDK 4 版

自 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.15.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 (第 4 版或更新版本),其中包含其他重大的 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 套件中提供的相應錯誤處理函式。