Admin SDK مجموعه ای از کتابخانه های سرور است که به شما امکان می دهد با Firebase از محیط های ممتاز برای انجام اقداماتی مانند:
- خواندن و نوشتن داده های Realtime Database با امتیازات کامل سرپرست.
- با استفاده از روشی ساده و جایگزین برای پروتکلهای سرور Firebase Cloud Messaging ، پیامهای Firebase Cloud Messaging را برنامهریزی کنید.
- توکن های تأیید اعتبار Firebase را ایجاد و تأیید کنید.
- به منابع Google Cloud مانند سطلهای Cloud Storage و پایگاههای داده Cloud Firestore مرتبط با پروژههای Firebase خود دسترسی پیدا کنید.
- برای انجام کارهایی مانند جستجوی اطلاعات کاربر یا تغییر آدرس ایمیل کاربر برای احراز هویت، کنسول مدیریت ساده شده خود را ایجاد کنید.
اگر علاقه مند به استفاده از Node.js SDK به عنوان یک کلاینت برای دسترسی کاربر نهایی هستید (مثلاً در دسکتاپ Node.js یا برنامه IoT)، بر خلاف دسترسی ادمین از یک محیط ممتاز (مانند سرور)، شما در عوض باید دستورالعملهای راهاندازی سرویس گیرنده جاوا اسکریپت SDK را دنبال کنید.
در اینجا یک ماتریس ویژگی وجود دارد که نشان می دهد چه ویژگی های Firebase در هر زبان پشتیبانی می شود:
برای کسب اطلاعات بیشتر در مورد ادغام Admin SDK برای این کاربردها، به Realtime Database ، FCM ، Authentication ، Remote Config و اسناد Cloud Storage مربوطه مراجعه کنید. بقیه این صفحه بر روی تنظیمات اولیه برای Admin SDK تمرکز دارد.
پیش نیازها
مطمئن شوید که یک برنامه سرور دارید.
مطمئن شوید که سرور شما بسته به اینکه از کدام Admin SDK استفاده میکنید موارد زیر را اجرا کند:
- Admin Node.js SDK — Node.js 14+ (توصیه Node.js 18+)
پشتیبانی Node.js 14 و 16 منسوخ شده است. - Admin Java SDK — Java 8+
- Admin Python SDK — Python 3.7+ (Python 3.8+ را توصیه می کنیم)
پشتیبانی از پایتون 3.7 منسوخ شده است. - Admin Go SDK — Go 1.20+
- Admin.NET SDK — .NET Framework 4.6.2+ یا NET Standard 2.0 برای NET 6.0+
- Admin Node.js SDK — Node.js 14+ (توصیه Node.js 18+)
یک پروژه Firebase و حساب سرویس راه اندازی کنید
برای استفاده از Firebase Admin SDK ، به موارد زیر نیاز دارید:
- پروژه Firebase
- یک حساب سرویس Firebase Admin SDK برای ارتباط با Firebase. هنگامی که یک پروژه Firebase ایجاد می کنید یا Firebase را به پروژه Google Cloud اضافه می کنید، این حساب سرویس به طور خودکار ایجاد می شود.
- یک فایل پیکربندی با اعتبار حساب سرویس شما.
اگر قبلاً پروژه Firebase ندارید، باید آن را در کنسول Firebase ایجاد کنید. برای کسب اطلاعات بیشتر در مورد پروژه های Firebase، از Understand Firebase Projects دیدن کنید.
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 Java SDK در مخزن مرکزی Maven منتشر شده است. برای نصب کتابخانه، آن را به عنوان یک وابستگی در فایل build.gradle
خود اعلام کنید:
dependencies {
implementation 'com.google.firebase:firebase-admin:9.3.0'
}
اگر از Maven برای ساخت برنامه خود استفاده می کنید، می توانید وابستگی زیر را به pom.xml
خود اضافه کنید:
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>9.3.0</version>
</dependency>
پایتون
Firebase Admin Python SDK از طریق pip در دسترس است. شما می توانید کتابخانه را برای همه کاربران از طریق sudo
نصب کنید:
sudo pip install firebase-admin
یا، می توانید کتابخانه را فقط برای کاربر فعلی با عبور دادن پرچم --user
نصب کنید:
pip install --user firebase-admin
برو
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.14.1
سی شارپ
NET Admin SDK می توان با استفاده از مدیر بسته دات نت نصب کرد:
Install-Package FirebaseAdmin -Version 3.0.1
همچنین، آن را با استفاده از ابزار خط فرمان dotnet
نصب کنید:
dotnet add package FirebaseAdmin --version 3.0.1
یا، می توانید آن را با افزودن ورودی مرجع بسته زیر به فایل .csproj
خود نصب کنید:
<ItemGroup>
<PackageReference Include="FirebaseAdmin" Version="3.0.1" />
</ItemGroup>
SDK را راه اندازی کنید
هنگامی که یک پروژه Firebase ایجاد کردید، میتوانید SDK را با اعتبارنامه پیشفرض Google Application مقداردهی اولیه کنید. از آنجایی که جستجوی اعتبار پیشفرض در محیطهای Google کاملاً خودکار است و نیازی به ارائه متغیرهای محیطی یا تنظیمات دیگر نیست، این روش اولیهسازی SDK به شدت برای برنامههایی که در محیطهای Google اجرا میشوند مانند Cloud Run، App Engine و Cloud Functions توصیه میشود.
برای تعیین اختیاری گزینه های مقداردهی اولیه برای سرویس هایی مانند Realtime Database ، Cloud Storage ، یا Cloud Functions ، از متغیر محیطی FIREBASE_CONFIG
استفاده کنید. اگر محتوای متغیر FIREBASE_CONFIG
با یک {
شروع شود، به عنوان یک شی JSON تجزیه خواهد شد. در غیر این صورت SDK فرض می کند که رشته مسیر یک فایل JSON حاوی گزینه ها است.
Node.js
const app = initializeApp();
جاوا
FirebaseApp.initializeApp();
پایتون
default_app = firebase_admin.initialize_app()
برو
app, err := firebase.NewApp(context.Background(), nil)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
سی شارپ
FirebaseApp.Create();
پس از تنظیم اولیه، می توانید از Admin SDK برای انجام انواع وظایف زیر استفاده کنید:
- اجرای احراز هویت سفارشی
- کاربران Firebase Authentication خود را مدیریت کنید
- خواندن و نوشتن داده ها از 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);
پایتون
cred = credentials.RefreshToken('path/to/refreshToken.json')
default_app = firebase_admin.initialize_app(cred)
برو
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("error initializing app: %v\n", err)
}
سی شارپ
FirebaseApp.Create(new AppOptions()
{
Credential = GoogleCredential.FromFile("path/to/refreshToken.json"),
});
SDK را در محیط های غیر Google راه اندازی کنید
اگر در یک محیط سرور غیر Google کار میکنید که در آن جستجوی اعتبارنامههای پیشفرض نمیتواند کاملاً خودکار باشد، میتوانید SDK را با یک فایل کلید حساب سرویس صادر شده مقداردهی کنید.
پروژههای Firebase از حسابهای سرویس Google پشتیبانی میکنند که میتوانید از آنها برای فراخوانی APIهای سرور Firebase از سرور برنامه یا محیط مورد اعتماد خود استفاده کنید. اگر در حال توسعه کد به صورت محلی یا نصب برنامه خود در محل هستید، می توانید از اعتبارنامه های به دست آمده از طریق این حساب سرویس برای تأیید درخواست های سرور استفاده کنید.
برای احراز هویت یک حساب سرویس و اجازه دسترسی به خدمات Firebase، باید یک فایل کلید خصوصی با فرمت JSON ایجاد کنید.
برای ایجاد یک فایل کلید خصوصی برای حساب سرویس خود:
در کنسول Firebase ، تنظیمات > حسابهای سرویس را باز کنید.
روی Generate New Private Key کلیک کنید، سپس با کلیک روی Generate Key تأیید کنید.
فایل JSON حاوی کلید را ایمن ذخیره کنید.
هنگام مجوز دادن از طریق یک حساب سرویس، دو انتخاب برای ارائه اعتبارنامه به برنامه خود دارید. میتوانید متغیر محیطی GOOGLE_APPLICATION_CREDENTIALS را تنظیم کنید، یا میتوانید مسیر کلید حساب سرویس را به صورت واضح در کد ارسال کنید. گزینه اول امن تر است و به شدت توصیه می شود.
برای تنظیم متغیر محیطی:
متغیر محیطی GOOGLE_APPLICATION_CREDENTIALS را روی مسیر فایل فایل JSON که حاوی کلید حساب سرویس شما است، تنظیم کنید. این متغیر فقط برای جلسه پوسته فعلی شما اعمال می شود، بنابراین اگر جلسه جدیدی را باز کردید، متغیر را دوباره تنظیم کنید.
لینوکس یا macOS
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
ویندوز
با PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
پس از تکمیل مراحل بالا، اعتبارنامه پیشفرض برنامه (ADC) میتواند به طور ضمنی اعتبار شما را تعیین کند و به شما این امکان را میدهد که از اعتبار حساب سرویس هنگام آزمایش یا اجرا در محیطهای غیر Google استفاده کنید.
SDK را همانطور که نشان داده شده آغاز کنید:
Node.js
initializeApp({
credential: applicationDefault(),
databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});
جاوا
FirebaseOptions options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.getApplicationDefault())
.setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
.build();
FirebaseApp.initializeApp(options);
پایتون
default_app = firebase_admin.initialize_app()
برو
app, err := firebase.NewApp(context.Background(), nil)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
سی شارپ
FirebaseApp.Create(new AppOptions()
{
Credential = GoogleCredential.GetApplicationDefault(),
ProjectId = "my-project-id",
});
چند برنامه را راه اندازی کنید
در بیشتر موارد، شما فقط باید یک برنامه پیش فرض را مقداردهی اولیه کنید. شما می توانید به دو روش معادل به خدمات خارج از آن برنامه دسترسی داشته باشید:
Node.js
// Initialize the default app
const defaultApp = initializeApp(defaultAppConfig);
console.log(defaultApp.name); // '[DEFAULT]'
// Retrieve services via the defaultApp variable...
let defaultAuth = getAuth(defaultApp);
let defaultDatabase = getDatabase(defaultApp);
// ... or use the equivalent shorthand notation
defaultAuth = getAuth();
defaultDatabase = getDatabase();
جاوا
// Initialize the default app
FirebaseApp defaultApp = FirebaseApp.initializeApp(defaultOptions);
System.out.println(defaultApp.getName()); // "[DEFAULT]"
// Retrieve services by passing the defaultApp variable...
FirebaseAuth defaultAuth = FirebaseAuth.getInstance(defaultApp);
FirebaseDatabase defaultDatabase = FirebaseDatabase.getInstance(defaultApp);
// ... or use the equivalent shorthand notation
defaultAuth = FirebaseAuth.getInstance();
defaultDatabase = FirebaseDatabase.getInstance();
پایتون
# Import the Firebase service
from firebase_admin import auth
# Initialize the default app
default_app = firebase_admin.initialize_app(cred)
print(default_app.name) # "[DEFAULT]"
# Retrieve services via the auth package...
# auth.create_custom_token(...)
برو
// Initialize default app
app, err := firebase.NewApp(context.Background(), nil)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
// Access auth service from the default app
client, err := app.Auth(context.Background())
if err != nil {
log.Fatalf("error getting Auth client: %v\n", err)
}
سی شارپ
// Initialize the default app
var defaultApp = FirebaseApp.Create(new AppOptions()
{
Credential = GoogleCredential.GetApplicationDefault(),
});
Console.WriteLine(defaultApp.Name); // "[DEFAULT]"
// Retrieve services by passing the defaultApp variable...
var defaultAuth = FirebaseAuth.GetAuth(defaultApp);
// ... or use the equivalent shorthand notation
defaultAuth = FirebaseAuth.DefaultInstance;
برخی موارد استفاده از شما نیاز دارند که همزمان چندین برنامه ایجاد کنید. برای مثال، ممکن است بخواهید دادههای Realtime Database یک پروژه Firebase را بخوانید و توکنهای سفارشی را برای پروژه دیگری برش دهید. یا ممکن است بخواهید دو برنامه را با اعتبار جداگانه احراز هویت کنید. Firebase SDK به شما امکان می دهد چندین برنامه را همزمان ایجاد کنید که هر کدام اطلاعات پیکربندی خاص خود را دارند.
Node.js
// Initialize the default app
initializeApp(defaultAppConfig);
// Initialize another app with a different config
var otherApp = initializeApp(otherAppConfig, 'other');
console.log(getApp().name); // '[DEFAULT]'
console.log(otherApp.name); // 'other'
// Use the shorthand notation to retrieve the default app's services
const defaultAuth = getAuth();
const defaultDatabase = getDatabase();
// Use the otherApp variable to retrieve the other app's services
const otherAuth = getAuth(otherApp);
const otherDatabase = getDatabase(otherApp);
جاوا
// Initialize the default app
FirebaseApp defaultApp = FirebaseApp.initializeApp(defaultOptions);
// Initialize another app with a different config
FirebaseApp otherApp = FirebaseApp.initializeApp(otherAppConfig, "other");
System.out.println(defaultApp.getName()); // "[DEFAULT]"
System.out.println(otherApp.getName()); // "other"
// Use the shorthand notation to retrieve the default app's services
FirebaseAuth defaultAuth = FirebaseAuth.getInstance();
FirebaseDatabase defaultDatabase = FirebaseDatabase.getInstance();
// Use the otherApp variable to retrieve the other app's services
FirebaseAuth otherAuth = FirebaseAuth.getInstance(otherApp);
FirebaseDatabase otherDatabase = FirebaseDatabase.getInstance(otherApp);
پایتون
# Initialize the default app
default_app = firebase_admin.initialize_app(cred)
# Initialize another app with a different config
other_app = firebase_admin.initialize_app(cred, name='other')
print(default_app.name) # "[DEFAULT]"
print(other_app.name) # "other"
# Retrieve default services via the auth package...
# auth.create_custom_token(...)
# Use the `app` argument to retrieve the other app's services
# auth.create_custom_token(..., app=other_app)
برو
// Initialize the default app
defaultApp, err := firebase.NewApp(context.Background(), nil)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
// Initialize another app with a different config
opt := option.WithCredentialsFile("service-account-other.json")
otherApp, err := firebase.NewApp(context.Background(), nil, opt)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
// Access Auth service from default app
defaultClient, err := defaultApp.Auth(context.Background())
if err != nil {
log.Fatalf("error getting Auth client: %v\n", err)
}
// Access auth service from other app
otherClient, err := otherApp.Auth(context.Background())
if err != nil {
log.Fatalf("error getting Auth client: %v\n", err)
}
سی شارپ
// Initialize the default app
var defaultApp = FirebaseApp.Create(defaultOptions);
// Initialize another app with a different config
var otherApp = FirebaseApp.Create(otherAppConfig, "other");
Console.WriteLine(defaultApp.Name); // "[DEFAULT]"
Console.WriteLine(otherApp.Name); // "other"
// Use the shorthand notation to retrieve the default app's services
var defaultAuth = FirebaseAuth.DefaultInstance;
// Use the otherApp variable to retrieve the other app's services
var otherAuth = FirebaseAuth.GetAuth(otherApp);
محدوده هایی را برای Realtime Database و Authentication تنظیم کنید
اگر از ماشین مجازی موتور محاسباتی Google با اعتبارنامه پیشفرض برنامه Google برای Realtime Database یا Authentication استفاده میکنید، مطمئن شوید که دامنه دسترسی مناسب را نیز تنظیم کردهاید. برای Realtime Database و Authentication ، به دامنههایی نیاز دارید که به userinfo.email
و یا cloud-platform
یا firebase.database
ختم میشوند. برای بررسی دامنه های دسترسی موجود و تغییر آنها، دستورات زیر را با استفاده از gcloud اجرا کنید.
gcloud
# Check the existing access scopes
gcloud compute instances describe [INSTANCE_NAME] --format json
# The above command returns the service account information. For example:
"serviceAccounts": [
{
"email": "your.gserviceaccount.com",
"scopes": [
"https://www.googleapis.com/auth/cloud-platform",
"https://www.googleapis.com/auth/userinfo.email"
]
}
],
# Stop the VM, then run the following command, using the service account
# that gcloud returned when you checked the scopes.
gcloud compute instances set-service-account [INSTANCE_NAME] --service-account "your.gserviceaccount.com" --scopes "https://www.googleapis.com/auth/firebase.database,https://www.googleapis.com/auth/userinfo.email"
تست با اعتبار کاربر نهایی gcloud
هنگام آزمایش Admin SDK به صورت محلی با اعتبارنامه پیشفرض برنامه Google که با اجرای gcloud auth application-default login
بهدست میآید، تغییرات بیشتری برای استفاده از Firebase Authentication به دلیل موارد زیر مورد نیاز است:
- Firebase Authentication اعتبارنامه کاربر نهایی gcloud ایجاد شده با استفاده از شناسه مشتری OAuth gcloud را نمی پذیرد.
- Firebase Authentication نیاز به ارائه شناسه پروژه هنگام مقداردهی اولیه برای این نوع اعتبارنامه های کاربر نهایی دارد.
به عنوان یک راه حل، می توانید اعتبارنامه پیش فرض برنامه Google را با استفاده از شناسه مشتری OAuth 2.0 خود در gcloud ایجاد کنید. شناسه مشتری OAuth باید یک نوع برنامه کاربردی دسکتاپ باشد.
gcloud
gcloud auth application-default login --client-id-file=[/path/to/client/id/file]
میتوانید شناسه پروژه را به صراحت در مقداردهی اولیه برنامه مشخص کنید یا فقط از متغیر محیطی GOOGLE_CLOUD_PROJECT
استفاده کنید. دومی از نیاز به ایجاد هرگونه تغییر اضافی برای آزمایش کد خود جلوگیری می کند.
برای تعیین صریح ID پروژه:
Node.js
import { initializeApp, applicationDefault } from 'firebase-admin/app';
initializeApp({
credential: applicationDefault(),
projectId: '<FIREBASE_PROJECT_ID>',
});
جاوا
FirebaseOptions options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.getApplicationDefault())
.setProjectId("<FIREBASE_PROJECT_ID>")
.build();
FirebaseApp.initializeApp(options);
پایتون
app_options = {'projectId': '<FIREBASE_PROJECT_ID>'}
default_app = firebase_admin.initialize_app(options=app_options)
برو
config := &firebase.Config{ProjectID: "<FIREBASE_PROJECT_ID>"}
app, err := firebase.NewApp(context.Background(), config)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
سی شارپ
FirebaseApp.Create(new AppOptions()
{
Credential = GoogleCredential.GetApplicationDefault(),
ProjectId = "<FIREBASE_PROJECT_ID>",
});
مراحل بعدی
درباره Firebase بیاموزید:
نمونه برنامه های Firebase را کاوش کنید.
کد منبع باز را در GitHub برای Node.js ، جاوا و پایتون کاوش کنید.
پست های وبلاگ مربوط به Admin SDK توسط یکی از سازندگان Admin SDK را بخوانید. به عنوان مثال: دسترسی به Firestore و Firebase از طریق یک سرور پراکسی .
ویژگی های Firebase را به برنامه خود اضافه کنید:
- یک باطن بدون سرور با Cloud Functions بنویسید.
- ذخیره اطلاعات با Realtime Database یا داده های حباب با Cloud Storage .
- اعلان ها را با Cloud Messaging دریافت کنید.