Catch up on everthing we announced at this year's Firebase Summit. Learn more

הוסף את ה- SDK של מנהל ה Firebase לשרת שלך

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

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

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

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

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

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

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

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

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

    • Admin Node.js SDK — Node.js 12+
    • Admin Java SDK - Java 7+ (ממליץ על Java 8+)
      התמיכה ב-Java 7 הוצאה משימוש.
    • Admin Python SDK - Python 3.6+
    • Admin Go SDK - Go 1.11+
    • Admin .NET SDK — .NET Framework 4.5+ או .Net Core 1.5+

הגדר פרויקט וחשבון שירות של 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:8.1.0'
}

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

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

פִּיתוֹן

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

$ sudo pip install firebase-admin

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

$ pip install --user firebase-admin

ללכת

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

# Install as a module dependency
$ go get firebase.google.com/go/v4

# Install to $GOPATH
$ go get firebase.google.com/go

C#

ניתן להתקין את ה-SDK של .NET Admin באמצעות מנהל החבילות של .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

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

פרויקטי Firebase לתמוך Google חשבונות השירות , שבו ניתן להשתמש כדי לקרוא APIs שרת 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(),
});

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

SDK של מנהל המערכת גם מספק פרטים אשר מאפשר לאמת עם Google OAuth2 לרענן אסימון:

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 גם ללא פרמטרים. במקרה זה, ה- SDK משתמשת אישורי ברירת יישום Google . מכיוון שחיפוש ברירת המחדל של אישורי ברירת המחדל הוא אוטומטי לחלוטין בסביבות Google, ללא צורך לספק משתני סביבה או תצורה אחרת, דרך זו של אתחול ה-SDK מומלצת מאוד עבור יישומים הפועלים על Compute Engine, Kubernetes Engine, 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 כדי לבצע את סוגי המשימות הבאים:

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

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

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

הגדר היקפים עבור מסד נתונים ואימות בזמן אמת

אם אתה משתמש VM: Google Compute Engine עם אישורי ברירת 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"

בדיקה עם אישורי משתמש קצה של gcloud

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

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

כפתרון עוקף, אתה יכול ליצור יישום Google אישורי ברירה ב 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 לאפליקציה שלך: