Go Admin SDK v4 への移行

バージョン 4.0.0 以降、Firebase Admin SDK for Go は 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.14.1

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 以降)をフェッチします。

一般的なエラー処理の変更点

v4 SDK には、プラットフォーム レベルのエラー状態を処理する関数を提供する、新しい errorutils パッケージが導入されています。バックエンド サービスエラーが原因でエラーが発生した場合、新しい関数 errorutils.HTTPResponse() を呼び出すことで、元のエラー レスポンスにアクセスできます。このパッケージの関数は、SDK 内の任意の API から返されたエラーと一緒に使用できます。

Authentication API の変更点

  • VerifyIDToken() API と 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 パッケージの対応するエラー処理関数を使用してください。