Panduan Migrasi Admin SDK Auth

Versi Admin SDK berikut menyebabkan perubahan yang dapat menyebabkan gangguan dalam dukungan autentikasi:

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

Migrasikan kode autentikasi yang ada ke versi baru menggunakan petunjuk di dalam panduan ini.

Admin Java SDK (5.0.0)

Gunakan setCredential() di FirebaseOptions.Builder

Metode FirebaseOptions.Builder.setServiceAccount() yang tidak digunakan lagi telah dihapus. Jika aplikasi Anda menggunakan metode ini, update aplikasi untuk menggunakan metode setCredential().

Sebelum

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

Sesudah

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

Perhatikan juga bahwa memanggil Builder.setCredential() saat membuat instance FirebaseOptions sekarang bersifat wajib. Memanggil Builder.build() tanpa menentukan kredensial akan menghasilkan pengecualian runtime.

Menangani error yang ditampilkan oleh metode factory di FirebaseCredentials

Metode factory berikut di kelas FirebaseCredentials sekarang mungkin menampilkan IOExceptions:

  • fromCertificate()
  • fromRefreshToken()

Ubah kode Anda untuk menanganinya.

Sebelum

FirebaseCredential credential = FirebaseCredentials.fromCertificate(stream);

Sesudah

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

Update implementasi khusus dari FirebaseCredential

Antarmuka FirebaseCredential telah diubah sebagai berikut:

Sebelum

Task<String> getAccessToken(boolean forceRefresh);

Sesudah

Task<GoogleOAuthAccessToken> getAccessToken();

GoogleOAuthAccessToken adalah jenis publik baru yang merangkum token akses (String) dan expiry time (long), yang ditampilkan dalam objek. Pengguna yang menyediakan implementasi khusus antarmuka ini harus mengimplementasikan metode baru.

Admin Node SDK (5.0.0)

Gunakan properti credential di admin.app.AppOptions

Properti serviceAccount yang tidak digunakan lagi telah dihapus. Jika aplikasi Anda menggunakan properti ini, update aplikasi untuk menggunakan properti credential.

Sebelum

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

Sesudah

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

Perlu diperhatikan bahwa menyetel properti credential saat menginisialisasi aplikasi sekarang bersifat wajib. Memanggil initializeApp tanpa menentukan kredensial akan menghasilkan pengecualian.

Update referensi ke admin.auth.UserMetadata

Properti di kelas UserMetadata telah diubah sebagai berikut:

  • createdAt sekarang menjadi creationTime
  • lastSignedInAt sekarang menjadi lastSignInTime

Sebelum

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);
  });

Sesudah

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)

Dependensi pada oauth2client diganti dengan google-auth

Firebase Admin Python SDK tidak lagi bergantung pada library oauth2client. Sebagai gantinya, sekarang SDK menggunakan library google-auth yang baru.

verify_id_token() memunculkan ValueErrors

Jika Anda memiliki kode yang secara eksplisit menangani jenis pengecualian spesifik yang dimunculkan oleh fungsi verify_id_token(), update kode Anda seperti yang ditunjukkan di bawah ini.

Sebelum

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

Sesudah

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

Jika kode Anda tidak menemukan pengecualian atau menemukan jenis Exception dasar Python, perubahan tidak diperlukan.