Admin SDK Auth 移行ガイド

Admin SDK の次のバージョンでは、認証サポートに重要な変更が行われています。

  • Java SDK 5.0.0
  • Node SDK 5.0.0
  • Python SDK 2.0.0

このガイドの指示に従って、既存の認証コードを新しいバージョンに移行してください。

Admin Java SDK(5.0.0)

FirebaseOptions.BuildersetCredential() の使用

非推奨になった FirebaseOptions.Builder.setServiceAccount() メソッドが削除されました。アプリがこのメソッドを使用している場合には、setCredential() メソッドを使用するように更新します。

修正前

FirebaseOptions options = new FirebaseOptions.Builder()
    .setServiceAccount(getCredentialAsStream())
    .build();

修正後

FirebaseOptions options = new FirebaseOptions.Builder()
    .setCredential(FirebaseCredentials.fromCertificate(getCredentialAsStream()))
    .build();

また、FirebaseOptions インスタンスの作成時に Builder.setCredential() を呼び出すことが必須になりました。認証情報を指定せずに Builder.build() を呼び出すと、ランタイム例外が発生します。

FirebaseCredentials のファクトリ メソッドでスローされたエラーの処理

FirebaseCredentials クラスの次のファクトリ メソッドが IOExceptions をスローするようになりました。

  • fromCertificate()
  • fromRefreshToken()

これらのエラーを処理するようにコードを変更します。

修正前

FirebaseCredential credential = FirebaseCredentials.fromCertificate(stream);

修正後

try {
    FirebaseCredential credential = FirebaseCredentials.fromCertificate(stream);
} catch (IOException e) {
    // handle error
    log.error("Failed to load Firebase credential", e);
}

FirebaseCredential のカスタム実装の更新

FirebaseCredential インターフェースが次のように変更されました。

修正前

Task<String> getAccessToken(boolean forceRefresh);

修正後

Task<GoogleOAuthAccessToken> getAccessToken();

GoogleOAuthAccessToken は、アクセス トークン(String)と有効期限(long)をカプセル化してオブジェクトに返す新しい public 型です。このインターフェースのカスタム実装を提供する場合には、新しいメソッドを実装する必要があります。

Admin Node SDK(5.0.0)

admin.app.AppOptionscredential プロパティの使用

非推奨のプロパティ serviceAccount が削除されました。アプリがこのプロパティを使用している場合は、credential プロパティを使用するようにアプリを更新します。

修正前

admin.initializeApp({
    serviceAccount: 'path/to/key.json'
});

修正後

var key = require("path/to/serviceAccountKey.json");
admin.initializeApp({
    credential: admin.credential.cert(key)
});

アプリを初期化するときに credential プロパティの設定が必須になりました。認証情報を指定せずに initializeApp を呼び出すと、例外が発生します。

admin.auth.UserMetadata の参照を更新する

UserMetadata クラスのプロパティが次のように変更されました。

  • createdAtcreationTime に変更
  • lastSignedInAtlastSignInTime に変更

修正前

admin.auth().getUser(uid)
  .then(function(userRecord) {
    var createdAt = userRecord.metadata.createdAt; // Date
    var lastSignedInAt = userRecord.metadata.lastSignedInAt // Date
  })
  .catch(function(error) {
    console.log("Error fetching user data:", error);
  });

修正後

admin.auth().getUser(uid)
  .then(function(userRecord) {
    var createdAt = userRecord.metadata.creationTime; // UTC string
    var lastSignedInAt = userRecord.metadata.lastSignInTime // UTC string
  })
  .catch(function(error) {
    console.log("Error fetching user data:", error);
  });

Admin Python SDK(2.0.0)

oauth2client の依存関係を google-auth に変更

Firebase Admin Python SDK と oauth2client ライブラリの依存関係がなくなりました。この SDK では、新しい google-auth ライブラリを使用します。

verify_id_token()ValueErrors が発生

verify_id_token() 関数で発生した特定の例外タイプを明示的に処理する場合には、次のようにコードを更新します。

修正前

try:
  claims = auth.verify_id_token(token)
except oauth2client.crypt.AppIdentityError:
  handle_error()

修正後

try:
  claims = auth.verify_id_token(token)
except ValueError:
  handle_error()

コードが例外をキャッチしない場合や Python の基本 Exception 型をキャッチする場合には、変更する必要はありません。