Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

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

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

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

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

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

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

پیش نیازها

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

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

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

یک حساب پروژه و سرویس Firebase تنظیم کنید

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

  • یک پروژه Firebase
  • یک حساب سرویس برای ارتباط با Firebase
  • یک فایل پیکربندی با اعتبارنامه حساب سرویس شما

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

SDK را اضافه کنید

اگر در حال راه اندازی یک پروژه جدید هستید ، باید SDK را برای زبان مورد نظر خود نصب کنید.

Node.js

SDK Firebase Admin Node.js در 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';

جاوا

SDK Firebase Admin Java در مخزن مرکزی 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 را می توان با استفاده از مدیر بسته .NET نصب کرد:

$ 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"

پس از اتمام مراحل بالا ، اعتبارنامه های پیش فرض برنامه (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 ، Engine Kubernetes ، Engine Engine و 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();

پس از راه اندازی اولیه ، می توانید از 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 را بخوانید و توکن های سفارشی را برای پروژه دیگر ضرب کنید. یا ممکن است بخواهید دو برنامه را با اعتبار جداگانه احراز هویت کنید. SDK Firebase به شما امکان می دهد چندین برنامه را همزمان ایجاد کنید ، هر کدام دارای اطلاعات پیکربندی خاص خود هستند.

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 اعتبار کاربر نهایی gcloud را که با استفاده از شناسه سرویس گیرنده gcloud OAuth ایجاد شده است ، نمی پذیرد.
  • احراز هویت 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 را به برنامه خود اضافه کنید: