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 menjadicreationTime
lastSignedInAt
sekarang menjadilastSignInTime
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.