Admin SDK の次のバージョンでは、認証サポートに重要な変更が行われています。
- Java SDK 5.0.0
- Node SDK 5.0.0
- Python SDK 2.0.0
このガイドの指示に従って、既存の認証コードを新しいバージョンに移行してください。
Admin Java SDK(5.0.0)
FirebaseOptions.Builder
の setCredential()
の使用
非推奨になった 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.AppOptions
の credential
プロパティの使用
非推奨のプロパティ 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
クラスのプロパティが次のように変更されました。
createdAt
をcreationTime
に変更lastSignedInAt
をlastSignInTime
に変更
修正前
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
型をキャッチする場合には、変更する必要はありません。