הוסף את Firebase Admin SDK לשרת שלך

ה-Admin SDK הוא קבוצה של ספריות שרתים המאפשרות לך לקיים אינטראקציה עם Firebase מסביבות מיוחסות כדי לבצע פעולות כמו:

  • קרא וכתוב נתוני מסד נתונים בזמן אמת עם הרשאות אדמין מלאות.
  • שלח באופן פרוגרמטי הודעות Firebase Cloud Messaging באמצעות גישה פשוטה וחלופית לפרוטוקולי שרת Firebase Cloud Messaging.
  • צור ואמת אסימוני אימות של Firebase.
  • גש למשאבים של Google Cloud כמו Cloud Storage דליים ומסדי נתונים של Cloud Firestore המשויכים לפרויקטים שלך ב-Firebase.
  • צור מסוף ניהול פשוט משלך כדי לעשות דברים כמו לחפש נתוני משתמש או לשנות כתובת דוא"ל של משתמש לצורך אימות.

אם אתה מעוניין להשתמש ב-SDK של Node.js כלקוח עבור גישת משתמש קצה (לדוגמה, ביישום Node.js שולחני או IoT), בניגוד לגישה של מנהל מערכת מסביבה מיוחסת (כמו שרת), אתה במקום זאת צריך לעקוב אחר ההוראות להגדרת ה-SDK של JavaScript של הלקוח .

להלן מטריצת תכונות המציגה אילו תכונות של Firebase נתמכות בכל שפה:

תכונה Node.js Java פִּיתוֹן ללכת C#
טביעת אסימונים מותאמת אישית
אימות אסימון מזהה
ניהול משתמשים
שליטה בגישה באמצעות תביעות מותאמות אישית
רענן ביטול אסימון
ייבוא ​​משתמשים
ניהול עוגיות הפעלה
יצירת קישורי פעולה בדוא"ל
ניהול תצורות ספקי SAML/OIDC
תמיכה בריבוי דירות
מסד נתונים בזמן אמת *
Firebase Cloud Messaging
FCM Multicast
ניהול מנויי נושא FCM
אחסון בענן
Cloud Firestore
תור פונקציות עם Cloud Tasks
ניהול פרוייקט
כללי אבטחה
ניהול מודלים של ML
תצורה מרחוק של Firebase
בדיקת אפליקציית Firebase
הרחבות של Firebase

למידע נוסף על אינטגרציה של Admin SDK לשימושים אלה, עיין בתיעוד המתאים של מסד נתונים בזמן אמת , FCM , אימות , תצורה מרחוק ואחסון ענן . שאר הדף הזה מתמקד בהגדרה הבסיסית עבור ה-Admin SDK.

דרישות מוקדמות

  • ודא שיש לך אפליקציית שרת.

  • ודא שהשרת שלך מפעיל את הפעולות הבאות בהתאם לאיזה Admin SDK אתה משתמש:

    • Admin Node.js SDK — Node.js 14+ (ממליץ על Node.js 16+)
      התמיכה ב-Node.js 14 הוצאה משימוש.
    • Admin Java SDK - Java 8+
    • Admin Python SDK - Python 3.7+ (ממליץ על Python 3.8+)
      התמיכה ב-Python 3.7 הוצאה משימוש.
    • Admin Go SDK - Go 1.17+
    • Admin .NET SDK — .NET Framework 4.6.1+ או .NET Standard 2.0 עבור .Net Core 2.0+

הגדר פרויקט וחשבון שירות של Firebase

כדי להשתמש ב-SDK של Firebase Admin, תזדקק לפרטים הבאים:

  • פרויקט Firebase.
  • חשבון שירות Firebase Admin SDK לתקשורת עם Firebase. חשבון שירות זה נוצר באופן אוטומטי כאשר אתה יוצר פרויקט Firebase או הוספת Firebase לפרויקט של Google Cloud.
  • קובץ תצורה עם האישורים של חשבון השירות שלך.

אם עדיין אין לך פרויקט Firebase, עליך ליצור אחד במסוף Firebase . בקר בהבנת פרויקטים של 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 אותו מכל קובץ JavaScript:

const { initializeApp } = require('firebase-admin/app');

אם אתה משתמש ב-ES2015, אתה יכול import את המודול:

import { initializeApp } from 'firebase-admin/app';

Java

Firebase Admin Java SDK מתפרסם במאגר המרכזי של Maven. כדי להתקין את הספרייה, הכריז עליה כתלות בקובץ build.gradle שלך:

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

אם אתה משתמש ב-Maven כדי לבנות את היישום שלך, אתה יכול להוסיף את התלות הבאה ל- pom.xml שלך:

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

פִּיתוֹן

Firebase Admin Python SDK זמין דרך pip . אתה יכול להתקין את הספרייה עבור כל המשתמשים באמצעות sudo :

sudo pip install firebase-admin

לחלופין, אתה יכול להתקין את הספרייה רק ​​עבור המשתמש הנוכחי על ידי העברת דגל --user :

pip install --user firebase-admin

ללכת

ניתן להתקין את ה- Go Admin SDK באמצעות כלי השירות go install :

# Install the latest version:
go install firebase.google.com/go/v4@latest

# Or install a specific version:
go install firebase.google.com/go/v4@4.13.0

C#

ניתן להתקין את ה-SDK של .NET Admin באמצעות מנהל החבילות של .NET:

Install-Package FirebaseAdmin -Version 2.4.0

לחלופין, התקן אותו באמצעות תוכנית השירות של שורת הפקודה dotnet :

dotnet add package FirebaseAdmin --version 2.4.0

לחלופין, אתה יכול להתקין אותו על ידי הוספת ערך ההפניה הבא של החבילה לקובץ .csproj שלך:

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

אתחל את ה-SDK

לאחר שיצרת פרויקט Firebase, תוכל לאתחל את ה-SDK עם אישורי ברירת המחדל של Google Application . מכיוון שחיפוש ברירת המחדל של אישורים הוא אוטומטי לחלוטין בסביבות Google, ללא צורך באספקת משתני סביבה או תצורה אחרת, דרך זו של אתחול ה-SDK מומלצת מאוד עבור יישומים הפועלים בסביבות Google כגון Cloud Run, App Engine ו-Cloud Functions.

כדי לציין אופציונלי אפשרויות אתחול עבור שירותים כגון מסד נתונים בזמן אמת, אחסון ענן או פונקציות ענן, השתמש במשתנה הסביבה FIREBASE_CONFIG . אם התוכן של המשתנה FIREBASE_CONFIG מתחיל ב- { הוא ינותח כאובייקט JSON. אחרת ה-SDK מניח שהמחרוזת היא הנתיב של קובץ JSON המכיל את האפשרויות.

Node.js

const app = initializeApp();

Java

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 כדי לבצע את סוגי המשימות הבאים:

שימוש באסימון רענון של OAuth 2.0

ה-Admin SDK מספק גם אישור המאפשר לך לאמת באמצעות אסימון רענון OAuth2 של Google :

Node.js

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

initializeApp({
  credential: refreshToken(myRefreshToken),
  databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});

Java

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 בסביבות שאינן של Google

אם אתה עובד בסביבת שרת שאינה של Google שבה לא ניתן לבצע חיפוש ברירת מחדל של ברירת המחדל באופן אוטומטי לחלוטין, תוכל לאתחל את ה-SDK עם קובץ מפתח חשבון שירות מיוצא.

פרויקטים של Firebase תומכים בחשבונות שירות של Google , שבהם אתה יכול להשתמש כדי לקרוא לממשקי API של שרת Firebase משרת האפליקציות או מהסביבה המהימנה שלך. אם אתה מפתח קוד באופן מקומי או פורס את היישום שלך במקום, אתה יכול להשתמש באישורים שהושגו דרך חשבון שירות זה כדי לאשר בקשות שרת.

כדי לאמת חשבון שירות ולהעניק לו הרשאה לגשת לשירותי Firebase, עליך ליצור קובץ מפתח פרטי בפורמט JSON.

כדי ליצור קובץ מפתח פרטי עבור חשבון השירות שלך:

  1. במסוף Firebase, פתח את הגדרות > חשבונות שירות .

  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'
});

Java

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(),
    ProjectId = "my-project-id",
});

אתחול אפליקציות מרובות

ברוב המקרים, עליך לאתחל רק אפליקציה יחידה, ברירת מחדל. אתה יכול לגשת לשירותים מחוץ לאפליקציה הזו בשתי דרכים שוות:

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

Java

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

מקרי שימוש מסוימים דורשים ממך ליצור מספר אפליקציות בו-זמנית. לדוגמה, ייתכן שתרצה לקרוא נתונים ממסד הנתונים בזמן אמת של פרויקט 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);

Java

// 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 Compute Engine VM עם אישורי ברירת המחדל של Google Application עבור מסד נתונים או אימות בזמן אמת, הקפד גם להגדיר את היקפי הגישה הנכונים . עבור מסד נתונים ואימות בזמן אמת, אתה זקוק להיקפים המסתיימים ב- 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

בעת בדיקה מקומית של ה-Admin SDK עם אישורי ברירת המחדל של Google Application שהושגו על ידי הפעלת gcloud auth application-default login , נדרשים שינויים נוספים כדי להשתמש באימות Firebase עקב הדברים הבאים:

  • אימות Firebase אינו מקבל אישורי משתמש קצה של gcloud שנוצרו באמצעות מזהה לקוח gcloud OAuth.
  • אימות Firebase מחייב לספק את מזהה הפרויקט בעת האתחול עבור סוגים אלה של אישורי משתמש קצה.

כדרך לעקיפת הבעיה, תוכל ליצור אישורי ברירת מחדל של Google Application ב- gcloud באמצעות מזהה לקוח משלך OAuth 2.0 . מזהה הלקוח של OAuth חייב להיות סוג יישום של יישום שולחן עבודה .

gcloud

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

אתה יכול לציין את מזהה הפרויקט במפורש באתחול האפליקציה או פשוט להשתמש במשתנה הסביבה GOOGLE_CLOUD_PROJECT . זה האחרון מונע את הצורך לבצע שינויים נוספים כדי לבדוק את הקוד שלך.

כדי לציין במפורש את מזהה הפרויקט:

Node.js

import { initializeApp, applicationDefault } from 'firebase-admin/app';

initializeApp({
  credential: applicationDefault(),
  projectId: '<FIREBASE_PROJECT_ID>',
});

Java

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

C#

FirebaseApp.Create(new AppOptions()
{
    Credential = GoogleCredential.GetApplicationDefault(),
    ProjectId = "<FIREBASE_PROJECT_ID>",
});

הצעדים הבאים

למד על Firebase:

הוסף תכונות Firebase לאפליקציה שלך: