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

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

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

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

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

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

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

תנאים מוקדמים

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

  • ודא שהשרת שלך מריץ את הפעולות הבאות, תלוי באיזה מנהל מערכת SDK שאתה משתמש:

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

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

כדי להשתמש ב- SDK של מנהל המערכת של Firebase, תצטרך את הדברים הבאים:

  • פרויקט Firebase
  • חשבון שירות לתקשורת עם Firebase
  • קובץ תצורה עם אישורי חשבון השירות שלך

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

הוסף את ה- SDK

אם אתה מגדיר פרויקט חדש, עליך להתקין את ה- SDK עבור השפה שבחרת.

Node.js

ה- Firkase Admin Node.js SDK זמין ב- npm. אם כבר אין לי package.json קובץ, ליצור אחת דרך npm init . הבא, להתקין את firebase-admin החבילה NPM ולשמור אותו שלך 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:8.0.0'
}

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

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

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

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

C #

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

באמצעות אסימון רענון OAuth 2.0

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

Node.js

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

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

C #

FirebaseApp.Create();

לאחר אתחולו, באפשרותך להשתמש ב- Admin SDK כדי לבצע את סוגי המשימות הבאות:

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

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

Node.js

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

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

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

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
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
const defaultAuth = admin.auth();
const defaultDatabase = admin.database();

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

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"

הצעדים הבאים

למד אודות Firebase:

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