FastAPI와 Firebase Cloud Messaging을 연동하여 푸시 알림 서비스 구현하기
푸시 알림 서비스는 모바일 애플리케이션에서 중요한 역할을 수행합니다. 사용자에게 중요한 정보를 실시간으로 전달하고, 애플리케이션을 주목할 수 있게 만들어줍니다. 이번 블로그 포스트에서는 FastAPI와 Firebase Cloud Messaging (FCM)을 연동하여 푸시 알림 서비스를 구현하는 방법을 알아보겠습니다.
Firebase 프로젝트 설정
- Firebase 콘솔에 로그인하고, 새 프로젝트를 만듭니다.
- 프로젝트 개요에서 “앱 추가”를 클릭하고, 푸시 알림을 구현할 플랫폼을 선택합니다 (Android 또는 iOS).
- 앱에 대한 디테일한 설정을 완료한 후, Firebase 설정 파일을 다운로드합니다 (.json 파일).
FastAPI 프로젝트 설정
- FastAPI 프로젝트를 생성하고, 필요한 종속성을 설치합니다.
- Firebase Admin SDK로 Firebase를 초기화하는 모듈을 작성합니다.
from fastapi import FastAPI import firebase_admin from firebase_admin import credentials app = FastAPI() def initialize_firebase(): firebase_cred = credentials.Certificate("/path/to/firebase_credentials.json") firebase_admin.initialize_app(firebase_cred) app.add_event_handler("startup", initialize_firebase)
Token 기반 사용자 인증
푸시 알림을 수신받을 사용자를 식별하기 위해 Firebase Auth를 사용하는 것이 일반적입니다. 사용자가 앱에 로그인하고 인증 토큰을 받은 후, FastAPI 서버에 해당 토큰을 보내 사용자를 인증할 수 있습니다.
- FastAPI 라우터에 사용자 인증을 위한 데코레이터를 작성합니다.
from fastapi import Depends, HTTPException, status from firebase_admin import auth def authenticate_user(token: str = Depends(get_token_from_request)): try: decoded_token = auth.verify_id_token(token) uid = decoded_token['uid'] # 사용자를 인증 처리 # ... except (ValueError, auth.ExpiredTokenError, auth.InvalidIdTokenError): raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid authentication credentials", headers={"WWW-Authenticate": "Bearer"}, )
- 토큰을 헤더에서 추출하는
get_token_from_request()
함수를 작성합니다.from fastapi import Header def get_token_from_request(authorization: str = Header(...)): return authorization.replace("Bearer ", "")
푸시 알림 보내기
이제 사용자 인증 및 Firebase를 초기화하는 코드가 준비되었습니다. 푸시 알림을 보내기 위해 다음 단계를 수행합니다.
- FastAPI 라우터에 푸시 알림 전송을 위한 엔드포인트를 작성합니다.
from firebase_admin import messaging @app.post('/send-push-notification') async def send_push_notification(user_token: str, text: str): message = messaging.Message( token=user_token, notification=messaging.Notification( title="새로운 메시지", body=text ) ) response = messaging.send(message) return response
- 클라이언트 애플리케이션에서 사용자 토큰을 얻은 후,
send-push-notification
엔드포인트로 요청을 보낼 수 있습니다.
마치며
이제 FastAPI와 Firebase Cloud Messaging(FCM)을 연동하여 푸시 알림 서비스를 구현하는 방법을 알아보았습니다. 사용자 인증과 FCM 설정을 통해 애플리케이션에서 중요하고 실시간으로 정보를 전달할 수 있는 푸시 알림 서비스를 구현할 수 있게 되었습니다.
#FastAPI #FirebaseCloudMessaging