Google is committed to advancing racial equity for Black communities. See how.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

أضف Firebase Admin SDK إلى خادمك

تتيح لك Admin SDK التفاعل مع Firebase من البيئات المميزة لتنفيذ إجراءات مثل:

  • قراءة وكتابة بيانات Realtime Database بامتيازات المسؤول الكاملة.
  • أرسل رسائل Firebase Cloud Messaging برمجيًا باستخدام نهج بديل بسيط لبروتوكولات خادم Firebase Cloud Messaging.
  • أنشئ رموز مصادقة Firebase وتحقق منها.
  • الوصول إلى موارد Google Cloud Platform مثل حاويات التخزين السحابي وقواعد بيانات Cloud Firestore المرتبطة بمشاريع Firebase.
  • قم بإنشاء وحدة تحكم المشرف المبسطة الخاصة بك للقيام بأشياء مثل البحث عن بيانات المستخدم أو تغيير عنوان البريد الإلكتروني للمستخدم للمصادقة.

إذا كنت مهتمًا باستخدام Node.js SDK كعميل لوصول المستخدم النهائي (على سبيل المثال ، في سطح مكتب Node.js أو تطبيق IoT) ، بدلاً من وصول المسؤول من بيئة مميزة (مثل الخادم) ، فأنت يجب بدلاً من ذلك اتباع التعليمات الخاصة بإعداد عميل JavaScript SDK .

فيما يلي مصفوفة ميزات توضح ميزات Firebase المدعومة في كل لغة:

خاصية Node.js جافا بايثون اذهب سي #
سك العملة المعدنية المخصصة
التحقق من رمز الهوية
إدارةالمستخدم
التحكم في الوصول مع المطالبات المخصصة
تحديث إبطال الرمز المميز
استيراد المستخدمين
إدارة ملفات تعريف الارتباط للجلسة
إنشاء روابط إجراءات البريد الإلكتروني
إدارة تكوينات موفر SAML / OIDC
دعم متعدد الإيجارات
قاعدة بيانات الوقت الحقيقي *
Firebase Cloud Messaging
الإرسال المتعدد FCM
إدارة اشتراكات FCM موضوع
سحابة التخزين
سحابة Firestore
ادارة مشروع
قواعد الأمان
إدارة نموذج ML
تهيئة Firebase عن بُعد

لمعرفة المزيد حول تكامل Admin SDK لهذه الاستخدامات ، راجع وثائق Realtime Database و FCM والمصادقة والتخزين السحابي المقابلة. تركز بقية هذه الصفحة على الإعداد الأساسي لـ Admin SDK.

المتطلبات الأساسية

  • تأكد من أن لديك تطبيق خادم.

  • تأكد من تشغيل خادمك لما يلي بناءً على Admin SDK الذي تستخدمه:

    • Admin Node.js SDK - Node.js 10.10.0+
    • المسؤول Java SDK - Java 7+ (أوصي بـ Java 8+)
      تم إيقاف دعم Java 7.
    • Admin Python SDK - Python 3.5+
    • Admin Go SDK - Go 1.11+
    • مسؤول .NET SDK - .NET Framework 4.5+ أو .Net Core 1.5+

إعداد مشروع Firebase وحساب الخدمة

لاستخدام Firebase Admin SDK ، ستحتاج إلى ما يلي:

  • مشروع Firebase
  • حساب خدمة للتواصل مع Firebase
  • ملف تكوين ببيانات اعتماد حساب الخدمة الخاص بك

إذا لم يكن لديك بالفعل مشروع Firebase ، فستحتاج إلى إنشاء واحد في وحدة تحكم Firebase . تفضل بزيارة فهم مشاريع Firebase لمعرفة المزيد حول مشاريع Firebase.

أضف SDK

إذا كنت تقوم بإعداد مشروع جديد ، فأنت بحاجة إلى تثبيت SDK للغة التي تختارها.

Node.js

يتوفر Firebase Admin Node.js SDK على npm. إذا لم يكن لديك ملف package.json بالفعل ، فأنشئ npm init عبر npm init . بعد ذلك، تثبيت firebase-admin حزمة الآلية الوقائية الوطنية وحفظه إلى الخاص package.json :

$ npm install firebase-admin --save

لاستخدام الوحدة في تطبيقك ، require من أي ملف JavaScript:

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

إذا كنت تستخدم Maven لإنشاء تطبيقك ، فيمكنك إضافة التبعية التالية إلى pom.xml الخاص بك:

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

بايثون

يتوفر Firebase Admin Python SDK عبر نقطة . يمكنك تثبيت المكتبة لجميع المستخدمين عبر sudo :

$ sudo pip install firebase-admin

أو يمكنك تثبيت المكتبة للمستخدم الحالي فقط عن طريق تمرير علامة --user :

$ pip install --user firebase-admin

اذهب

يمكن تثبيت Go 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 1.16.0

بدلاً من ذلك ، قم بتثبيته باستخدام الأداة المساعدة لسطر أوامر dotnet :

$ dotnet add package FirebaseAdmin --version 1.16.0

أو يمكنك تثبيته عن طريق إضافة إدخال مرجع الحزمة التالي إلى ملف .csproj الخاص بك:

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

تهيئة SDK

بمجرد إنشاء مشروع Firebase ، يمكنك تهيئة SDK باستخدام إستراتيجية ترخيص تجمع ملف حساب الخدمة الخاص بك مع بيانات الاعتماد الافتراضية لتطبيق Google .

تدعم مشاريع Firebase حسابات خدمة Google ، والتي يمكنك استخدامها لاستدعاء واجهات برمجة تطبيقات خادم Firebase من خادم التطبيق أو البيئة الموثوقة. إذا كنت تقوم بتطوير تعليمات برمجية محليًا أو نشر تطبيقك محليًا ، فيمكنك استخدام بيانات الاعتماد التي تم الحصول عليها عبر حساب الخدمة هذا لتفويض طلبات الخادم.

لمصادقة حساب خدمة وتفويضه للوصول إلى خدمات Firebase ، يجب عليك إنشاء ملف مفتاح خاص بتنسيق JSON.

لإنشاء ملف مفتاح خاص لحساب الخدمة الخاص بك:

  1. في وحدة تحكم Firebase ، افتح الإعدادات> حسابات الخدمة .

  2. انقر فوق إنشاء مفتاح خاص جديد ، ثم قم بالتأكيد بالنقر فوق إنشاء مفتاح .

  3. تخزين ملف JSON الذي يحتوي على المفتاح بشكل آمن.

عند التفويض عبر حساب خدمة ، لديك خياران لتقديم بيانات الاعتماد لتطبيقك. يمكنك إما تعيين متغير بيئة GOOGLE_APPLICATION_CREDENTIALS ، أو يمكنك صراحة تمرير المسار إلى مفتاح حساب الخدمة في التعليمات البرمجية. الخيار الأول أكثر أمانًا ويوصى به بشدة.

لتعيين متغير البيئة:

GOOGLE_APPLICATION_CREDENTIALS متغير البيئة GOOGLE_APPLICATION_CREDENTIALS على مسار ملف ملف JSON الذي يحتوي على مفتاح حساب الخدمة الخاص بك. ينطبق هذا المتغير فقط على جلسة shell الحالية ، لذا إذا فتحت جلسة جديدة ، فقم بتعيين المتغير مرة أخرى.

Linux أو macOS

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"

شبابيك

مع بوويرشيل:

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

سي #

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

استخدام رمز تحديث OAuth 2.0 المميز

يوفر Admin SDK أيضًا بيانات اعتماد تتيح لك المصادقة باستخدام رمز تحديث Google OAuth2 المميز:

Node.js

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

سي #

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

التهيئة بدون معلمات

يمكن أيضًا تهيئة SDK بدون معلمات. في هذه الحالة ، تستخدم SDK بيانات الاعتماد الافتراضية لتطبيق Google وتقرأ الخيارات من متغير البيئة FIREBASE_CONFIG . إذا بدأ محتوى المتغير FIREBASE_CONFIG بـ { فسيتم تحليله ككائن JSON. بخلاف ذلك ، تفترض SDK أن السلسلة هي اسم ملف JSON الذي يحتوي على الخيارات.

Node.js

// Initialize the default app
var admin = require('firebase-admin');
var 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)
}

سي #

FirebaseApp.Create();

بمجرد التهيئة ، يمكنك استخدام Admin SDK لإنجاز الأنواع التالية من المهام:

تهيئة تطبيقات متعددة

في معظم الحالات ، ما عليك سوى تهيئة تطبيق افتراضي واحد. يمكنك الوصول إلى الخدمات من هذا التطبيق بطريقتين مكافئتين:

Node.js

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

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

// Retrieve services via the defaultApp variable...
var defaultAuth = defaultApp.auth();
var 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)
}

سي #

ارجوكم

تتطلب منك بعض حالات الاستخدام إنشاء تطبيقات متعددة في نفس الوقت. على سبيل المثال ، قد ترغب في قراءة البيانات من قاعدة بيانات 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
var defaultAuth = admin.auth();
var defaultDatabase = admin.database();

// Use the otherApp variable to retrieve the other app's services
var otherAuth = otherApp.auth();
var 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)
}

سي #

// 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 Compute Engine 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 إلى تطبيقك: