As seguintes versões de SDKs Admin apresentam alterações interruptivas no suporte à autenticação:
- SDK do Java 5.0.0
- SDK do Node 5.0.0
- SDK do Python 2.0.0
Migre o código de autenticação existente para as novas versões usando as instruções deste guia.
SDK Admin para Java (5.0.0)
Usar setCredential()
em FirebaseOptions.Builder
O método obsoleto FirebaseOptions.Builder.setServiceAccount()
foi
removido. Se o app usa esse método, atualize-o para usar o método setCredential()
.
Antes
FirebaseOptions options = new FirebaseOptions.Builder()
.setServiceAccount(getCredentialAsStream())
.build();
Depois
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredential(FirebaseCredentials.fromCertificate(getCredentialAsStream()))
.build();
Observe também que chamar Builder.setCredential()
ao criar uma instância
FirebaseOptions
agora é obrigatório. Chamar Builder.build()
sem especificar uma
credencial resulta em uma exceção de execução.
Processar erros lançados pelos métodos de fábrica em FirebaseCredentials
Os seguintes métodos de fábrica na classe FirebaseCredentials
agora podem gerar
IOExceptions:
fromCertificate()
fromRefreshToken()
Modifique seu código para processá-las.
Antes
FirebaseCredential credential = FirebaseCredentials.fromCertificate(stream);
Depois
try {
FirebaseCredential credential = FirebaseCredentials.fromCertificate(stream);
} catch (IOException e) {
// handle error
log.error("Failed to load Firebase credential", e);
}
Atualizar implementações personalizadas de FirebaseCredential
A interface FirebaseCredential foi modificada da seguinte forma:
Antes
Task<String> getAccessToken(boolean forceRefresh);
Depois
Task<GoogleOAuthAccessToken> getAccessToken();
GoogleOAuthAccessToken
é um novo tipo público que encapsula o token
de acesso (String
) e o expiry time (long
) retornados em um objeto. Usuários que fornecem implementações personalizadas dessa interface devem implementar o novo método.
SDK Admin para Node (5.0.0)
Usar a propriedade credential
em admin.app.AppOptions
A propriedade obsoleta serviceAccount
foi removida. Se seu app usa essa
propriedade, atualize-o para usar a propriedade credential
.
Antes
admin.initializeApp({
serviceAccount: 'path/to/key.json'
});
Depois
var key = require("path/to/serviceAccountKey.json");
admin.initializeApp({
credential: admin.credential.cert(key)
});
Agora é obrigatório definir a propriedade credential
ao inicializar um
app. Chamar initializeApp
sem especificar uma credencial resulta em
uma exceção.
Atualizar referências para admin.auth.UserMetadata
As propriedades na classe UserMetadata
foram alteradas da seguinte maneira:
createdAt
agora écreationTime
lastSignedInAt
agora élastSignInTime
Antes
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);
});
Depois
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);
});
SDK Admin para Python (2.0.0)
Dependência de oauth2client substituída por google-auth
O SDK Admin para Python do Firebase não depende mais da biblioteca oauth2client. Agora o SDK usa a nova biblioteca google-auth.
verify_id_token()
gera ValueErrors
Se você tiver um código que processa explicitamente tipos de exceção específicos gerados pela função
verify_id_token()
, atualize seu código conforme mostrado abaixo.
Antes
try:
claims = auth.verify_id_token(token)
except oauth2client.crypt.AppIdentityError:
handle_error()
Depois
try:
claims = auth.verify_id_token(token)
except ValueError:
handle_error()
Se o código não detecta exceções nem captura o tipo de base Exception
do Python, não é necessário fazer alterações.