[Firebase] firebase admin sdk 세팅하기

스윗포테이토·2023년 1월 13일
1

Firebase는 간단한 database를 포함한 백엔드를 제공해주는 서비스이다. 여러가지 기능이 있지만, 그 중 firebase Authentication를 활용하면 로그인 구현을 굉장히 편하게 할 수 있다. 로그인 세션, 토큰 등을 관리해주며 소셜 로그인의 UI까지 제공한다.

firebase admin sdk

firebase를 잘 활용하면 백엔드 없이도 서비스를 구현할 수 있지만, 현재 진행중인 프로젝트에는 백엔드가 따로 있다. 프론트엔드 측에서 firebase를 활용해서 로그인 관련 처리를 모두 하고 있지만, 백엔드 쪽에서도 특정 api에 대해서는 사용자 검증이 필요하다. 이 경우 firebase admin sdk를 활용해볼 수 있다.

공식 문서

1. add firebase sdk

npm install firebase-admin --save

2. create private key for firebase sdk

Firebase Console > [Project] > [프로젝트 설정]

[프로젝트 설정] > [서비스 계정] > [새 비공개 키 생성]

[키 생성]을 통해 키를 다운로드 받을 수 있다. 키는 한번만 다운 받을 수 있고, 다운 받은 키를 잃어버리면 새로 발급 받아야 하니 잘 저장해두자.

3. initialize sdk

방금 받은 키로 admin을 초기화해야 하는데, 두가지 방법이 있다.

1. json파일을 직접 불러오기

키 생성 페이지에 나와있는 예제처럼 키의 경로를 기재해서 로드하는 방식이다.

const admin = require("firebase-admin");

const serviceAccount = require("path/to/serviceAccountKey.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount)
});

주소를 직접 기재하는 것이 찝찝하다면, env파일에 경로를 저장한다음 불러올 수도 있다. (process.env.ENV_VARIABLE) 그러나 그럴 바에는 두번째 옵션을 사용하자.

2. 환경변수로 json key path 설정하기

GOOGLE_APPLICATION_CREDENTIALS

위 이름으로 key의 경로를 저장하면, applicationDefault() 호출 시 자동으로 환경변수를 불러와 해당 경로의 key 파일을 읽는다.

const admin = require("firebase-admin");
admin.initializeApp({
  credential: admin.credential.applicationDefault(),
});

<환경변수 세팅하는 법>

  • 리눅스 / 맥의 경우

    export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
  • 윈도우

    $env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"

    나는 도커를 사용중이기 때문에 그냥 env 파일에 추가해주었다.

    GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"


공식 문서에서는 두번째 방법을 권장하고 있다. (STRONGLY RECOMMENDED)

참고로 공식 문서에서는 두번째 방법을 권장하고 있다.


reference

Add the Firebase Admin SDK to your server

profile
나의 삽질이 미래의 누군가를 구할 수 있다면...

0개의 댓글