diff --git a/src/main/java/com/backend/allreva/common/config/FcmInitializer.java b/src/main/java/com/backend/allreva/common/config/FcmInitializer.java index c2cf0285..7b795f1f 100644 --- a/src/main/java/com/backend/allreva/common/config/FcmInitializer.java +++ b/src/main/java/com/backend/allreva/common/config/FcmInitializer.java @@ -3,8 +3,8 @@ import com.google.auth.oauth2.GoogleCredentials; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; -import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; import javax.annotation.PostConstruct; import org.springframework.stereotype.Component; @@ -12,14 +12,18 @@ public class FcmInitializer { @PostConstruct - public void initizlize() { - try (FileInputStream serviceAccount = new FileInputStream("./src/main/resources/firebase/firebase-service-account.json")) { + public void initialize() { + try (InputStream serviceAccount = getClass().getResourceAsStream("/firebase/firebase-service-account.json")) { + if (serviceAccount == null) { + throw new IOException("Firebase service account file not found in classpath!"); + } FirebaseOptions options = FirebaseOptions.builder() .setCredentials(GoogleCredentials.fromStream(serviceAccount)) .build(); FirebaseApp.initializeApp(options); } catch (IOException e) { e.printStackTrace(); + throw new RuntimeException("Failed to initialize Firebase", e); } } } diff --git a/src/main/java/com/backend/allreva/firebase/util/FcmTokenUtils.java b/src/main/java/com/backend/allreva/firebase/util/FcmTokenUtils.java index 9b00cc7e..1aad8669 100644 --- a/src/main/java/com/backend/allreva/firebase/util/FcmTokenUtils.java +++ b/src/main/java/com/backend/allreva/firebase/util/FcmTokenUtils.java @@ -2,8 +2,8 @@ import com.google.auth.oauth2.AccessToken; import com.google.auth.oauth2.GoogleCredentials; -import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; import java.time.Instant; import java.util.List; import lombok.NoArgsConstructor; @@ -18,12 +18,14 @@ public final class FcmTokenUtils { private static AccessToken accessToken; static { - try (FileInputStream serviceAccount = new FileInputStream(KEY_PATH)) { - googleCredentials = GoogleCredentials - .fromStream(serviceAccount) + try (InputStream serviceAccount = FcmTokenUtils.class.getResourceAsStream(KEY_PATH)) { + if (serviceAccount == null) { + throw new IOException("Google service account JSON file not found in classpath: " + KEY_PATH); + } + googleCredentials = GoogleCredentials.fromStream(serviceAccount) .createScoped(List.of("https://www.googleapis.com/auth/firebase.messaging")); } catch (IOException e) { - log.error("GoogleCredentials 초기화 실패: {0}", e); + log.error("GoogleCredentials 초기화 실패"); throw new RuntimeException(e); } } @@ -41,7 +43,7 @@ public static String getAccessToken() { log.info("새 엑세스 토큰 발급. 만료 시간: {}", accessToken.getExpirationTime()); return accessToken.getTokenValue(); } catch (IOException e) { - log.error("엑세스 토큰 발급 실패: {0}", e); + log.error("엑세스 토큰 발급 실패"); throw new RuntimeException(e); } }