Admin SDK는 권한이 있는 환경에서 Firebase와 상호작용하여 다음과 같은 작업을 수행할 수 있는 서버 라이브러리 집합입니다.
- 전체 관리자 권한으로 일괄 데이터 관리 및 기타 작업을 위해 Firebase Data Connect 서비스에서 쿼리 및 변형을 실행합니다.
- 전체 관리자 권한으로 Realtime Database 데이터를 읽고 씁니다.
- Firebase Cloud Messaging 서버 프로토콜에 대한 간단한 대안적인 접근법을 사용하여 프로그래매틱 방식으로 Firebase Cloud Messaging 메시지를 전송합니다.
- Firebase 인증 토큰을 생성하고 검증합니다.
- Cloud Storage 버킷과 같은 Google Cloud 리소스 및 Firebase 프로젝트에 연결된 Cloud Firestore 데이터베이스에 액세스합니다.
- 간소화된 관리 콘솔을 직접 만들어 인증을 위해 사용자 데이터를 조회하거나 사용자의 이메일 주소를 변경하는 등의 작업을 수행합니다.
서버와 같은 관리자 권한 환경에서의 액세스가 아니라 최종 사용자의 액세스를 위한 클라이언트로 Node.js SDK를 사용하려는 경우(예: Node.js 데스크톱 또는 IoT 애플리케이션) 클라이언트 JavaScript SDK 설정 안내를 따라야 합니다.
다음은 각 언어에서 지원되는 Firebase 기능을 보여주는 표입니다.
이러한 용도의 Admin SDK 통합에 대한 자세한 내용은 해당 Realtime Database, FCM, Authentication Remote Config, Cloud Storage 문서를 참조하세요. 이 페이지의 나머지 부분에서는 기본적인 Admin SDK 설정 방법을 보여줍니다.
기본 요건
서버 앱이 있는지 확인합니다.
사용하는 Admin SDK에 따라 서버에서 다음을 실행해야 합니다.
- Admin Node.js SDK — Node.js 18 이상(Node.js 20 이상 권장)
Node.js 18은 지원 중단되었습니다. - Admin 자바 SDK — 자바 8 이상
- Admin Python SDK - Python 3.9 이상(Python 3.10 이상 권장)
Python 3.9은 지원 중단되었습니다. - Admin Go SDK - Go 1.23 이상
- Admin .NET SDK - .NET Framework 4.6.2 이상 또는 .NET Standard 2.0 또는 .NET 6.0 이상(.NET 8.0 이상 권장)
.NET 6.0 및 7.0은 지원 중단되었습니다.
- Admin Node.js SDK — Node.js 18 이상(Node.js 20 이상 권장)
Firebase 프로젝트 및 서비스 계정 설정
Firebase Admin SDK를 사용하려면 다음이 필요합니다.
- Firebase 프로젝트
- Firebase와 통신할 Firebase Admin SDK 서비스 계정. 이 서비스 계정은 Firebase 프로젝트를 만들거나 Google Cloud 프로젝트에 Firebase를 추가할 때 자동으로 생성됩니다.
- 서비스 계정의 사용자 인증 정보가 포함된 구성 파일
아직 Firebase 프로젝트가 없으면 Firebase Console에서 프로젝트를 만들어야 합니다. Firebase 프로젝트에 대한 자세한 내용은 Firebase 프로젝트 이해를 참조하세요.
SDK 추가
새 프로젝트를 설정할 때는 원하는 언어의 SDK를 설치해야 합니다.
Node.js
Firebase Admin Node.js SDK는 npm으로 제공됩니다. 아직 package.json 파일이 없으면 npm init으로 파일을 만듭니다. 그런 다음 firebase-admin npm 패키지를 설치하고 package.json에 저장합니다.
npm install firebase-admin --save
애플리케이션에서 모듈을 사용하려면 자바스크립트 파일에서 require로 가져옵니다.
const { initializeApp } = require('firebase-admin/app');
ES2015를 사용하는 경우 import로 모듈을 가져올 수 있습니다.
import { initializeApp } from 'firebase-admin/app';
자바
Firebase Admin 자바 SDK는 Maven 중앙 저장소에 게시되어 있습니다.
라이브러리를 설치하려면 build.gradle 파일에서 종속 항목으로 선언합니다.
dependencies {
implementation 'com.google.firebase:firebase-admin:9.8.0'
}
Maven을 사용하여 애플리케이션을 빌드하는 경우 pom.xml에 다음과 같은 종속 항목을 추가할 수 있습니다.
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>9.8.0</version>
</dependency>
Python
Firebase Admin Python SDK는 pip를 통해 제공됩니다.
sudo를 통해 모든 사용자용으로 라이브러리를 설치할 수 있습니다.
sudo pip install firebase-admin
또는 --user 플래그를 전달하여 현재 사용자용으로만 라이브러리를 설치할 수 있습니다.
pip install --user firebase-admin
Go
Go Admin SDK는 go get 유틸리티를 사용하여 설치할 수 있습니다.
# Install the latest version:
go get firebase.google.com/go/v4@latest
# Or install a specific version:
go get firebase.google.com/go/v4@4.19.0
C#
.NET Admin SDK는 .NET 패키지 관리자를 사용하여 설치할 수 있습니다.
Install-Package FirebaseAdmin -Version 3.5.0
또는 dotnet 명령줄 유틸리티를 사용하여 설치합니다.
dotnet add package FirebaseAdmin --version 3.5.0
또는 .csproj 파일에 다음 패키지 참조 항목을 추가하여 설치할 수 있습니다.
<ItemGroup>
<PackageReference Include="FirebaseAdmin" Version="3.5.0" />
</ItemGroup>
SDK 초기화
Firebase 프로젝트를 만든 후에 Google 애플리케이션 기본 사용자 인증 정보를 사용하여 SDK를 초기화할 수 있습니다. Google 환경에서는 기본 사용자 인증 정보 조회가 완전 자동화되어 환경 변수나 기타 구성을 제공할 필요가 없으므로 Firebase App Hosting, Cloud Run, App Engine, Cloud Functions for Firebase 등의 Google 환경에서 실행되는 애플리케이션의 경우 이 방법으로 SDK를 초기화하는 것이 적극 권장됩니다.
필요에 따라 Realtime Database, Cloud Storage 또는 Cloud Functions와 같은 서비스의 초기화 옵션을 지정하려면 FIREBASE_CONFIG 환경 변수를 사용하세요. FIREBASE_CONFIG 변수의 내용이 {로 시작되면 JSON 객체로 파싱됩니다. 그렇지 않은 경우 SDK는 문자열이 옵션을 포함하는 JSON 파일의 경로라고 가정합니다.
Node.js
const app = initializeApp();
자바
FirebaseApp.initializeApp();
Python
default_app = firebase_admin.initialize_app()
Go
app, err := firebase.NewApp(context.Background(), nil)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
C#
FirebaseApp.Create();
초기화되면 Admin SDK를 사용하여 다음 유형의 작업을 수행할 수 있습니다.
- 커스텀 인증 구현
- Firebase Authentication 사용자 관리
- Firebase Data Connect 서비스에서 관리 쿼리 및 변형 수행
- Realtime Database에서 데이터 읽고 쓰기
- Firebase Cloud Messaging 메시지 전송
OAuth 2.0 갱신 토큰 사용
Admin SDK는 Google OAuth2 갱신 토큰으로 인증할 수 있는 사용자 인증 정보도 제공합니다.
Node.js
const myRefreshToken = '...'; // Get refresh token from OAuth2 flow
initializeApp({
credential: refreshToken(myRefreshToken),
databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});
자바
FileInputStream refreshToken = new FileInputStream("path/to/refreshToken.json");
FirebaseOptions options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.fromStream(refreshToken))
.setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
.build();
FirebaseApp.initializeApp(options);
Python
cred = credentials.RefreshToken('path/to/refreshToken.json')
default_app = firebase_admin.initialize_app(cred)
Go
opt := option.WithCredentialsFile("path/to/refreshToken.json")
config := &firebase.Config{ProjectID: "my-project-id"}
app, err := firebase.NewApp(context.Background(), config, opt)
if err != nil {
log.Fatalf(