Admin SDK 인증 마이그레이션 가이드

다음과 같은 버전의 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 유형을 포착하는 경우에는 변경할 필요가 없습니다.