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

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

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

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

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

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

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

پیش نیازها

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

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

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

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

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

  • یک پروژه 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 آن را از هر فایل جاوا اسکریپت:

var admin = require('firebase-admin');

اگر شما با استفاده ES2015، شما می توانید import ماژول به جای:

import * as admin from 'firebase-admin';

جاوا

Firebase Admin Java SDK در مخزن مرکزی Maven منتشر می شود. برای نصب کتابخانه، آن را اعلام به عنوان یک وابستگی خود را build.gradle فایل:

dependencies {
  implementation 'com.google.firebase:firebase-admin:8.0.0'
}

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

<dependency>
  <groupId>com.google.firebase</groupId>
  <artifactId>firebase-admin</artifactId>
  <version>8.0.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

C #

.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 که شامل کلید حساب خدمات خود را. این متغیر فقط برای جلسه شل فعلی شما اعمال می شود ، بنابراین اگر جلسه جدیدی را باز کردید ، دوباره متغیر را تنظیم کنید.

Linux یا 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

admin.initializeApp({
    credential: admin.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)
}

C #

FirebaseApp.Create(new AppOptions()
{
    Credential = GoogleCredential.GetApplicationDefault(),
});

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

مدیریت SDK نیز فراهم می کند اعتبارنامه که اجازه می دهد شما را به تصدیق با از OAuth2 گوگل بازخوانی کد:

Node.js

const refreshToken = '...'; // Get refresh token from OAuth2 flow

admin.initializeApp({
  credential: admin.credential.refreshToken(refreshToken),
  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)
}

C #

FirebaseApp.Create(new AppOptions()
{
    Credential = GoogleCredential.FromFile("path/to/refreshToken.json"),
});

بدون پارامتر شروع به کار کنید

SDK همچنین می تواند بدون پارامتر مقداردهی اولیه شود. در این مورد، از SDK با استفاده از گوگل نرم افزار پیش فرض مدارک . از آنجا که جستجوی اعتبار پیش فرض در محیط Google کاملاً خودکار است و نیازی به تأمین متغیرهای محیط یا پیکربندی دیگر نیست ، این روش داخلی سازی SDK برای برنامه هایی که روی Compute Engine ، Kubernetes Engine ، App Engine و Cloud Functions اجرا می شوند مجدداً توصیه می شود.

به صورت اختیاری اولیه گزینه برای خدمات مانند پایگاه بیدرنگ، ابر ذخیره سازی، و یا توابع ابر، استفاده از FIREBASE_CONFIG متغیر محیط زیست است. اگر محتوای FIREBASE_CONFIG متغیر با یک شروع می شود { آن را به عنوان یک شی JSON تجزیه شده است. در غیر این صورت SDK فرض می کند که رشته مسیر یک فایل JSON حاوی گزینه ها است.

Node.js

const app = admin.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)
}

C #

FirebaseApp.Create();

پس از راه اندازی اولیه ، می توانید از Admin SDK برای انجام انواع زیر استفاده کنید:

چندین برنامه را ابتدا شروع کنید

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

Node.js

// Initialize the default app
const defaultApp = admin.initializeApp(defaultAppConfig);

console.log(defaultApp.name);  // '[DEFAULT]'

// Retrieve services via the defaultApp variable...
let defaultAuth = defaultApp.auth();
let defaultDatabase = defaultApp.database();

// ... or use the equivalent shorthand notation
defaultAuth = admin.auth();
defaultDatabase = admin.database();

جاوا

// 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)
}

C #

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

Node.js

// Initialize the default app
admin.initializeApp(defaultAppConfig);

// Initialize another app with a different config
var otherApp = admin.initializeApp(otherAppConfig, 'other');

console.log(admin.app().name);  // '[DEFAULT]'
console.log(otherApp.name);     // 'other'

// Use the shorthand notation to retrieve the default app's services
const defaultAuth = admin.auth();
const defaultDatabase = admin.database();

// Use the otherApp variable to retrieve the other app's services
const otherAuth = otherApp.auth();
const otherDatabase = otherApp.database();

جاوا

// 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)
}

C #

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

مراحل بعدی

درباره Firebase بیاموزید:

ویژگی های Firebase را به برنامه خود اضافه کنید: