ה-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 נתמכות בכל שפה:
למידע נוסף על אינטגרציה של 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+
- Admin Node.js SDK — Node.js 14+ (ממליץ על Node.js 16+)
הגדר פרויקט וחשבון שירות של 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 get
:
# Install the latest version:
go get firebase.google.com/go/v4@latest
# Or install a specific version:
go get 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 כדי לבצע את סוגי המשימות הבאים:
- הטמעת אימות מותאם אישית
- נהל את משתמשי Firebase Authentication שלך
- קרא וכתוב נתונים ממסד הנתונים בזמן אמת
- שלח הודעות Firebase Cloud Messaging
שימוש באסימון רענון של 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.
כדי ליצור קובץ מפתח פרטי עבור חשבון השירות שלך:
במסוף Firebase, פתח את הגדרות > חשבונות שירות .
לחץ על צור מפתח פרטי חדש ולאחר מכן אשר על ידי לחיצה על צור מפתח .
אחסן בצורה מאובטחת את קובץ ה-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:
חקור את קוד המקור הפתוח ב-GitHub עבור Node.js , Java ו- Python .
קרא פוסטים בבלוג הקשורים ל-Admin SDK מאת אחד היוצרים של ה-Admin SDK. לדוגמה: גישה ל-Firestore ול-Firebase דרך שרת proxy .
הוסף תכונות Firebase לאפליקציה שלך:
- כתוב backend ללא שרת עם פונקציות ענן .
- אחסן מידע עם מסד נתונים בזמן אמת או נתוני קוביות עם אחסון בענן .
- קבל הודעות עם הודעות ענן .