ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

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

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

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

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

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

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

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

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

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

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

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

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

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

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

إذا لم يكن لديك بالفعل مشروع Firebase ، فستحتاج إلى إنشاء واحد في وحدة تحكم Firebase . تفضل بزيارة Understanding Firebase Projects لمعرفة المزيد حول مشروعات 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:6.15.0'
}
 

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

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

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

 $ dotnet add package FirebaseAdmin --version 1.15.0
 

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

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

تهيئة SDK

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

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

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

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

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

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

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

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

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

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

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 = new 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 = new 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)
} 

ج #

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

تعيين نطاقات لقاعدة بيانات Realtime والمصادقة

إذا كنت تستخدم Google Compute Engine VM مع بيانات اعتماد تطبيق Google الافتراضية لقاعدة بيانات Realtime أو المصادقة ، فتأكد أيضًا من تعيين نطاقات الوصول الصحيحة. بالنسبة إلى قاعدة بيانات ومصادقة Realtime ، تحتاج إلى نطاقات تنتهي بـ 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 إلى تطبيقك: