다음과 같은 버전의 Admin SDK에는 인증 지원 관련 브레이킹 체인지가 있습니다.
- 자바 SDK 5.0.0
- Node SDK 5.0.0
- Python SDK 2.0.0
이 가이드의 안내에 따라 기존 인증 코드를 새 버전으로 이전하세요.
Admin 자바 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
클래스의 다음과 같은 팩토리 메서드에서 IOException이 발생할 수 있습니다.
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
)을 모두 캡슐화하는 새로운 공용 유형입니다. 이 인터페이스의 커스텀 구현을 제공하는 사용자는 새 메서드를 구현해야 합니다.
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
유형을 포착하는 경우에는 변경할 필요가 없습니다.