Catch up on everthing we announced at this year's Firebase Summit. Learn more

Firebase Admin SDK را به سرور خود اضافه کنید

Admin SDK مجموعه ای از کتابخانه های سرور است که به شما امکان می دهد با Firebase از محیط های ممتاز برای انجام اقداماتی مانند:

  • خواندن و نوشتن داده های پایگاه داده بیدرنگ با امتیازات کامل سرپرست.
  • با استفاده از روشی ساده و جایگزین برای پروتکل‌های سرور Firebase Cloud Messaging، پیام‌های Firebase Cloud Messaging را برنامه‌ریزی کنید.
  • توکن های تأیید اعتبار Firebase را ایجاد و تأیید کنید.
  • به منابع Google Cloud مانند سطل‌های ذخیره‌سازی ابری و پایگاه‌های اطلاعاتی Cloud Firestore مرتبط با پروژه‌های Firebase خود دسترسی پیدا کنید.
  • برای انجام کارهایی مانند جستجوی داده های کاربر یا تغییر آدرس ایمیل کاربر برای احراز هویت، کنسول مدیریت ساده شده خود را ایجاد کنید.

اگر علاقه مند به استفاده از Node.js SDK به عنوان یک کلاینت برای دسترسی کاربر نهایی هستید (مثلاً در دسکتاپ Node.js یا برنامه IoT)، بر خلاف دسترسی ادمین از یک محیط ممتاز (مانند یک سرور)، شما باید به جای دنبال دستورالعمل برای راه اندازی مشتری جاوا اسکریپت SDK .

در اینجا یک ماتریس ویژگی وجود دارد که نشان می دهد چه ویژگی های Firebase در هر زبان پشتیبانی می شود:

ویژگی Node.js جاوا پایتون برو سی شارپ
ضرب توکن سفارشی
تایید شناسه رمز
مدیریت کاربر
کنترل دسترسی با ادعاهای سفارشی
Refresh Token Revocation
وارد کردن کاربران
مدیریت کوکی های جلسه
ایجاد پیوندهای اکشن ایمیل
مدیریت پیکربندی های ارائه دهنده SAML/OIDC
پشتیبانی چند اجاره ای
پایگاه داده بیدرنگ *
Firebase Cloud Messaging
FCM Multicast
اشتراک های موضوع FCM را مدیریت کنید
فضای ذخیره ابری
Cloud Firestore
مدیریت پروژه
قوانین امنیتی
مدیریت مدل ML
پیکربندی از راه دور Firebase
بررسی برنامه Firebase

برای کسب اطلاعات بیشتر در مورد ادغام محیط مدیریت SDK برای این استفاده می کند، مربوط به دیدن پایگاه بیدرنگ ، FCM ، احراز هویت ، از راه دور پیکربندی ، و ابر ذخیره سازی اسناد و مدارک. بقیه این صفحه بر روی تنظیمات اولیه Admin SDK تمرکز دارد.

پیش نیازها

  • مطمئن شوید که یک برنامه سرور دارید.

  • اطمینان حاصل کنید که سرور شما بسته به اینکه از کدام SDK مدیریت استفاده می کنید موارد زیر را اجرا کند:

    • Admin Node.js SDK — Node.js 12+
    • Admin Java SDK — Java 7+ (جاوا 8+ را توصیه می کنیم)
      پشتیبانی از جاوا 7 منسوخ شده است.
    • Admin Python SDK — Python 3.6+
    • Admin Go SDK — Go 1.11+
    • Admin.NET SDK — .NET Framework 4.5+ یا .Net Core 1.5+

یک پروژه Firebase و حساب سرویس راه اندازی کنید

برای استفاده از Firebase Admin SDK، به موارد زیر نیاز دارید:

  • پروژه Firebase
  • یک حساب سرویس Firebase Admin SDK برای ارتباط با Firebase. هنگامی که یک پروژه Firebase ایجاد می کنید یا Firebase را به پروژه Google Cloud اضافه می کنید، این حساب سرویس به طور خودکار ایجاد می شود.
  • یک فایل پیکربندی با اعتبار حساب سرویس شما.

اگر شما در حال حاضر یک پروژه فایربیس دارند، شما نیاز به ایجاد یک در کنسول فایربیس . مشاهده درک پروژه فایربیس برای کسب اطلاعات بیشتر در مورد پروژه های فایربیس.

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:8.1.0'
}

اگر شما استفاده از Maven را برای ساخت برنامه خود را، شما می توانید وابستگی زیر به خود را اضافه کنید pom.xml :

<dependency>
  <groupId>com.google.firebase</groupId>
  <artifactId>firebase-admin</artifactId>
  <version>8.1.0</version>
</dependency>

پایتون

فایربیس محیط مدیریت پایتون SDK در دسترس از طریق است پیپ . شما می توانید کتابخانه برای همه کاربران از طریق نصب sudo :

$ sudo pip install firebase-admin

یا، شما می توانید از کتابخانه فقط برای کاربر فعلی را با عبور از نصب --user پرچم:

$ pip install --user firebase-admin

برو

برو محیط مدیریت SDK را می توان با استفاده از نصب go get ابزار:

# Install as a module dependency
$ go get firebase.google.com/go/v4

# Install to $GOPATH
$ go get firebase.google.com/go

سی شارپ

NET Admin SDK را می توان با استفاده از مدیر بسته دات نت نصب کرد:

$ Install-Package FirebaseAdmin -Version 2.2.0

روش دیگر، آن را نصب کنید با استفاده از dotnet ابزار خط فرمان:

$ dotnet add package FirebaseAdmin --version 2.2.0

یا، شما می توانید آن را با اضافه کردن ورودی مرجع بستههای زیر را نصب .csproj فایل:

<ItemGroup>
  <PackageReference Include="FirebaseAdmin" Version="2.2.0" />
</ItemGroup>

SDK را راه اندازی کنید

هنگامی که شما یک پروژه فایربیس ایجاد کرده اند، شما می توانید SDK با یک استراتژی مجوز است که ترکیبی از سرویس فایل حساب خود را همراه با مقداردهی اولیه گوگل نرم افزار پیش فرض مدارک .

پروژه فایربیس گوگل حمایت حساب های خدمات ، که شما می توانید استفاده کنید برای تماس رابط های برنامه کاربردی سرور فایربیس از سرور برنامه خود و یا محیط مورد اعتماد است. اگر در حال توسعه کد به صورت محلی یا نصب برنامه خود در محل هستید، می توانید از اعتبارنامه های به دست آمده از طریق این حساب سرویس برای تأیید درخواست های سرور استفاده کنید.

برای احراز هویت یک حساب سرویس و اجازه دسترسی به خدمات Firebase، باید یک فایل کلید خصوصی با فرمت JSON ایجاد کنید.

برای ایجاد یک فایل کلید خصوصی برای حساب سرویس خود:

  1. در فایربیس کنسول، تنظیمات> حساب خدمات .

  2. کلیک کنید تولید جدید کلید خصوصی، و سپس با کلیک کردن روی تولید کلید.

  3. فایل 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"

پس از تکمیل مراحل بالا، Application Default Credentials (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(),
});

با استفاده از نشانه بازخوانی OAuth 2.0

مدیریت SDK نیز فراهم می کند اعتبارنامه که اجازه می دهد شما را به تصدیق با از 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 همچنین می تواند بدون هیچ پارامتری مقداردهی اولیه شود. در این مورد، از SDK با استفاده از گوگل نرم افزار پیش فرض مدارک . از آنجایی که جستجوی اعتبار پیش‌فرض در محیط‌های Google کاملاً خودکار است، بدون نیاز به ارائه متغیرهای محیطی یا پیکربندی‌های دیگر، این روش اولیه‌سازی SDK اکیداً برای برنامه‌هایی که در Compute Engine، Kubernetes Engine، App Engine و توابع Cloud اجرا می‌شوند، توصیه می‌شود.

به صورت اختیاری اولیه گزینه برای خدمات مانند پایگاه بیدرنگ، ابر ذخیره سازی، و یا توابع ابر، استفاده از 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 برای انجام انواع وظایف زیر استفاده کنید:

چند برنامه را راه اندازی کنید

در بیشتر موارد، شما فقط باید یک برنامه پیش فرض را مقداردهی اولیه کنید. شما می توانید به دو روش معادل به خدمات خارج از آن برنامه دسترسی داشته باشید:

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;

برخی موارد استفاده از شما نیاز دارند که همزمان چندین برنامه ایجاد کنید. برای مثال، ممکن است بخواهید داده‌ها را از پایگاه داده بیدرنگ یک پروژه 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);

محدوده هایی را برای پایگاه داده بیدرنگ و احراز هویت تنظیم کنید

اگر شما با استفاده از یک موتور محاسبه Google VM با Google نرم افزار پیش فرض اعتبارنامه برای پایگاه بیدرنگ یا احراز هویت، مطمئن شوید که همچنین مجموعه ای از حق حوزه دسترسی . برای پایگاه بیدرنگ و احراز هویت، شما نیاز حوزه پایان دادن به در 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

در هنگام تست SDK محیط مدیریت به صورت محلی با گوگل نرم افزار پیش فرض مدارک به دست آمده در حال اجرا توسط gcloud auth application-default login ، تغییرات اضافی مورد نیاز است برای استفاده از فایربیس احراز هویت با توجه به موارد زیر:

  • Firebase Authentication اعتبار کاربر نهایی gcloud ایجاد شده با استفاده از شناسه مشتری OAuth gcloud را نمی پذیرد.
  • احراز هویت Firebase نیاز به ارائه شناسه پروژه هنگام مقداردهی اولیه برای این نوع اعتبارنامه های کاربر نهایی دارد.

عنوان یک راه حل، شما می توانید برنامه های Google مدارک پیش فرض در تولید gcloud خود را با استفاده از OAuth 2.0 شناسه مشتری . شناسه کلاینت OAuth را به یک نوع دسکتاپ نرم افزار برنامه.

gcloud

gcloud auth application-default login --client-id-file=[/path/to/client/id/file]

شما می توانید ID پروژه به صراحت در مقدار دهی اولیه برنامه مشخص و یا فقط استفاده از GOOGLE_CLOUD_PROJECT متغیر محیط زیست است. دومی از نیاز به ایجاد هرگونه تغییر اضافی برای آزمایش کد شما جلوگیری می کند.

برای تعیین صریح شناسه پروژه:

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 را به برنامه خود اضافه کنید: