Google มุ่งมั่นที่จะพัฒนาความเท่าเทียมทางเชื้อชาติสำหรับชุมชนคนผิวดำ มาดูกันว่า
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

เพิ่ม Firebase Admin SDK ไปยังเซิร์ฟเวอร์ของคุณ

Admin SDK ช่วยให้คุณสามารถโต้ตอบกับ Firebase จากสภาพแวดล้อมที่มีสิทธิ์ในการดำเนินการเช่น:

  • อ่านและเขียนข้อมูลฐานข้อมูลเรียลไทม์ด้วยสิทธิ์ผู้ดูแลระบบเต็ม
  • ส่งข้อความ Firebase Cloud Messaging แบบเป็นโปรแกรมโดยใช้วิธีที่ง่ายและเป็นทางเลือกไปยังโปรโตคอลเซิร์ฟเวอร์ Firebase Cloud Messaging
  • สร้างและตรวจสอบโทเค็น Firebase รับรองความถูกต้อง
  • เข้าถึงทรัพยากรของ Google Cloud Platform เช่นที่เก็บ Cloud Storage และฐานข้อมูล Cloud Firestore ที่เกี่ยวข้องกับโครงการ Firebase ของคุณ
  • สร้างคอนโซลผู้ดูแลระบบที่เรียบง่ายของคุณเองเพื่อทำสิ่งต่าง ๆ เช่นค้นหาข้อมูลผู้ใช้หรือเปลี่ยนที่อยู่อีเมลของผู้ใช้สำหรับการตรวจสอบสิทธิ์

หากคุณสนใจที่จะใช้ Node.js SDK เป็นไคลเอนต์สำหรับการเข้าถึงผู้ใช้ปลายทาง (ตัวอย่างเช่นในเดสก์ท็อป Node.js หรือแอปพลิเคชัน IoT) ซึ่งตรงข้ามกับการเข้าถึงของผู้ดูแลระบบจากสภาพแวดล้อมที่มีสิทธิ์พิเศษ (เช่นเซิร์ฟเวอร์) ควรทำตาม คำแนะนำในการตั้งค่าไคลเอ็นต์ JavaScript SDK

นี่คือเมทริกซ์ของคุณลักษณะที่แสดงว่าฟีเจอร์ Firebase รองรับในแต่ละภาษา:

ลักษณะเฉพาะ Node.js ชวา หลาม ไป ค#
Custom Token Minting
การยืนยัน Token ID
การจัดการผู้ใช้
ควบคุมการเข้าถึงด้วยการอ้างสิทธิ์ที่กำหนดเอง
รีเฟรชการเพิกถอนโทเค็น
นำเข้าผู้ใช้
การจัดการคุกกี้เซสชั่น
การสร้างลิงก์การดำเนินการกับอีเมล
การจัดการการกำหนดค่า SAML / OIDC
การสนับสนุนหลายผู้เช่า
ฐานข้อมูลเรียลไทม์ * * * *
Firebase Cloud Messaging
มัลติคาสต์ FCM
จัดการการสมัครสมาชิกหัวข้อ FCM
การจัดเก็บเมฆ
Cloud Firestore
การบริหารโครงการ
กฎความปลอดภัย
การจัดการโมเดล ML
Firebase Remote Config

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการรวม SDK ของผู้ดูแลระบบสำหรับการใช้งานเหล่านี้โปรดดูเอกสาร ฐานข้อมูลเรียลไทม์ที่ เกี่ยวข้อง FCM การ รับรองความถูกต้อง และที่ เก็บข้อมูลบนคลาวด์ ส่วนที่เหลือของหน้านี้มุ่งเน้นไปที่การตั้งค่าพื้นฐานสำหรับ Admin SDK

ข้อกำหนดเบื้องต้น

  • ตรวจสอบให้แน่ใจว่าคุณมีแอปเซิร์ฟเวอร์

  • ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ของคุณทำงานต่อไปนี้ขึ้นอยู่กับ Admin SDK ที่คุณใช้:

    • Admin Node.js SDK - Node.js 10.10.0+
    • ผู้ดูแลระบบ Java SDK - Java 7+ (แนะนำ Java 8+)
      การสนับสนุน Java 7 เลิกใช้แล้ว
    • ผู้ดูแลระบบ Python SDK - Python 3.5+
    • SDK ผู้ดูแลระบบ Go 1.11 ขึ้นไป
    • Admin .NET SDK - .NET Framework 4.5+ หรือ. Net Core 1.5+

ตั้งค่าบัญชี Firebase และบัญชีบริการ

ในการใช้ Firebase Admin SDK คุณจะต้องมีสิ่งต่อไปนี้:

  • โครงการ Firebase
  • บัญชีบริการเพื่อสื่อสารกับ Firebase
  • ไฟล์กำหนดค่าที่มีข้อมูลรับรองบัญชีบริการของคุณ

หากคุณยังไม่มีโปรเจ็กต์ Firebase คุณจะต้องสร้างโปรเจคใน คอนโซล Firebase เยี่ยมชม ทำความเข้าใจกับโครงการ Firebase เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับโครงการ Firebase

เพิ่ม SDK

หากคุณกำลังตั้งค่าโครงการใหม่คุณจะต้องติดตั้ง SDK สำหรับภาษาที่คุณเลือก

Node.js

Firebase Admin Node.js SDK พร้อมใช้งานในเวลา npm หากคุณยังไม่มีไฟล์ package.json ให้สร้างไฟล์ผ่าน npm init ถัดไปติดตั้งแพ็คเกจ firebase 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: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 พร้อมใช้งานผ่าน pip คุณสามารถติดตั้งไลบรารีสำหรับผู้ใช้ทั้งหมดผ่าน 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
 

ค#

SDK ผู้ดูแลระบบ. NET สามารถติดตั้งได้โดยใช้ตัวจัดการแพ็คเกจ. 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 Application

โครงการ Firebase รองรับ บัญชีบริการ ของ Google ซึ่งคุณสามารถใช้โทรหาเซิร์ฟเวอร์ Firebase API จากเซิร์ฟเวอร์แอปของคุณหรือสภาพแวดล้อมที่เชื่อถือได้ หากคุณกำลังพัฒนารหัสในเครื่องหรือการปรับใช้แอปพลิเคชันของคุณคุณสามารถใช้ข้อมูลรับรองที่ได้รับผ่านบัญชีบริการนี้เพื่อให้สิทธิ์คำขอเซิร์ฟเวอร์

ในการตรวจสอบสิทธิ์บัญชีบริการและให้สิทธิ์ในการเข้าถึงบริการ Firebase คุณต้องสร้างไฟล์กุญแจส่วนตัวในรูปแบบ JSON

วิธีสร้างไฟล์กุญแจส่วนตัวสำหรับบัญชีบริการของคุณ:

  1. ในคอนโซล Firebase ให้เปิด การตั้งค่า> บัญชีบริการ

  2. คลิก สร้างคีย์ส่วนตัวใหม่ จากนั้นยืนยันโดยคลิก สร้างคีย์

  3. จัดเก็บไฟล์ JSON ที่มีรหัสอย่างปลอดภัย

เมื่อให้สิทธิ์ผ่านบัญชีบริการคุณมีสองทางเลือกในการมอบข้อมูลประจำตัวให้กับใบสมัครของคุณ คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS หรือคุณสามารถส่งผ่านเส้นทางไปยังรหัสบัญชีบริการได้อย่างชัดเจน ตัวเลือกแรกปลอดภัยกว่าและแนะนำอย่างยิ่ง

ในการตั้งค่าตัวแปรสภาพแวดล้อม:

ตั้งค่าตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS เป็นพา ธ ไฟล์ของไฟล์ JSON ที่มีรหัสบัญชีบริการของคุณ ตัวแปรนี้ใช้กับเซสชันเชลล์ปัจจุบันของคุณเท่านั้นดังนั้นหากคุณเปิดเซสชันใหม่ให้ตั้งค่าตัวแปรอีกครั้ง

Linux หรือ macOS

 export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
 

ของ windows

ด้วย 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 Application และอ่านตัวเลือกจากตัวแปรสภาพแวดล้อม 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;
 

กรณีการใช้งานบางกรณีคุณต้องสร้างแอปหลายแอปพร้อมกัน ตัวอย่างเช่นคุณอาจต้องการอ่านข้อมูลจากฐานข้อมูลแบบเรียลไทม์ของหนึ่งโครงการ 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);
 

กำหนดขอบเขตสำหรับฐานข้อมูลเรียลไทม์และการรับรองความถูกต้อง

หากคุณใช้ Google Compute Engine VM พร้อมข้อมูลรับรองเริ่มต้นของ 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 ให้แอปของคุณ: