Skip to content
Migrating from NextAuth.js v4? Read our migration guide.
시작하기어댑터Firebase Firestore

Firebase 어댑터

Firebase Admin SDKFirestore를 사용합니다.

리소스

설정

설치

npm install @auth/firebase-adapter firebase-admin

환경 변수

// 서비스 계정 파일을 통한 인증
GOOGLE_APPLICATION_CREDENTIALS
 
// 값으로 인증
AUTH_FIREBASE_PROJECT_ID
AUTH_FIREBASE_CLIENT_EMAIL
AUTH_FIREBASE_PRIVATE_KEY

설정

auth.ts
import NextAuth from "next-auth"
import { FirestoreAdapter } from "@auth/firebase-adapter"
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  providers: [],
  adapter: FirestoreAdapter(),
})

인증

서비스 계정 파일

먼저 Firebase 프로젝트를 생성하고 서비스 계정 키를 생성합니다. 다음 주소로 이동하세요: https://console.firebase.google.com/u/0/project/{project-id}/settings/serviceaccounts/adminsdk ({project-id}를 여러분의 프로젝트 ID로 바꿔주세요)

  1. 서비스 계정 키를 다운로드하고 프로젝트에 저장합니다. (파일을 .gitignore에 추가하는 것을 잊지 마세요!)
  2. 환경 변수에 GOOGLE_APPLICATION_CREDENTIALS를 추가하고, 서비스 계정 키 파일을 가리키도록 설정합니다.
  3. 어댑터는 자동으로 환경 변수를 인식하고 Firebase Admin SDK와 인증하는 데 사용합니다. 어댑터에 추가적인 인증 옵션을 전달할 필요가 없습니다.

서비스 계정 값 설정

  1. 서비스 계정 키를 임시 위치에 다운로드합니다. (이 파일을 커밋하지 마세요!)
  2. 프로젝트에 다음 환경 변수를 추가합니다.
    a. AUTH_FIREBASE_PROJECT_ID
    b. AUTH_FIREBASE_CLIENT_EMAIL
    c. AUTH_FIREBASE_PRIVATE_KEY
./auth.ts
import NextAuth from "next-auth"
import { FirestoreAdapter } from "@auth/firebase-adapter"
import { cert } from "firebase-admin/app"
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  adapter: FirestoreAdapter({
    credential: cert({
      projectId: process.env.AUTH_FIREBASE_PROJECT_ID,
      clientEmail: process.env.AUTH_FIREBASE_CLIENT_EMAIL,
      privateKey: process.env.AUTH_FIREBASE_PRIVATE_KEY,
    }),
  }),
})

기존 Firestore 인스턴스 사용하기

이미 Firestore 인스턴스가 있다면, 이를 어댑터에 직접 전달할 수 있습니다.

💡

서버리스 환경에서 인스턴스를 전달할 때, 중복된 앱 초기화를 처리하는 것을 잊지 마세요.

initFirestore 유틸리티를 사용하여 앱을 초기화하고 안전하게 인스턴스를 가져올 수 있습니다.

./auth.ts
import NextAuth from "next-auth"
import { FirestoreAdapter } from "@auth/firebase-adapter"
import { firestore } from "lib/firestore"
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  adapter: FirestoreAdapter(firestore),
})

서버리스 환경에서 중복된 앱 초기화 문제를 방지하는 데 도움을 주는 유틸리티 함수입니다.
매개변수가 전달되지 않으면, GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 사용하여 Firestore 인스턴스를 초기화합니다.

lib/firestore.ts
import { initFirestore } from "@auth/firebase-adapter"
import { cert } from "firebase-admin/app"
 
export const firestore = initFirestore({
  credential: cert({
    projectId: process.env.FIREBASE_PROJECT_ID,
    clientEmail: process.env.FIREBASE_CLIENT_EMAIL,
    privateKey: process.env.FIREBASE_PRIVATE_KEY,
  }),
})
Auth.js © Balázs Orbán and Team - 2025