เพิ่ม Firebase Admin SDK ในเซิร์ฟเวอร์

Admin SDK เป็นชุดไลบรารีของเซิร์ฟเวอร์ที่ให้คุณโต้ตอบกับ Firebase จากสภาพแวดล้อมที่ได้รับสิทธิ์เพื่อดำเนินการต่างๆ เช่น

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

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

ต่อไปนี้เป็นเมทริกซ์ฟีเจอร์ที่แสดงฟีเจอร์ของ Firebase ที่รองรับในแต่ละภาษา

ฟีเจอร์ Node.js Java Python Go C#
การสร้างโทเค็นที่กำหนดเอง
การยืนยันโทเค็นรหัส
การจัดการผู้ใช้
ควบคุมการเข้าถึงด้วยการอ้างสิทธิ์ที่กำหนดเอง
รีเฟรชการเพิกถอนโทเค็น
นำเข้าผู้ใช้
การจัดการคุกกี้เซสชัน
การสร้างลิงก์การดำเนินการเกี่ยวกับอีเมล
การจัดการการกำหนดค่าผู้ให้บริการ SAML/OIDC
การสนับสนุนกลุ่มผู้ใช้หลายกลุ่ม
ฐานข้อมูลเรียลไทม์ *
Firebase Cloud Messaging
FCM มัลติแคสต์
จัดการการสมัครรับข้อมูลตามหัวข้อของ FCM
พื้นที่เก็บข้อมูลระบบคลาวด์
Cloud Firestore
จัดลำดับฟังก์ชันด้วย Cloud Tasks
การจัดการโครงการ
กฎความปลอดภัย
การจัดการโมเดล ML
การกำหนดค่าระยะไกลของ Firebase
การตรวจสอบแอป Firebase
Firebase Extensions

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

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

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

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

    • Admin Node.js SDK — Node.js 14+ (แนะนําให้รองรับ Node.js 16 ขึ้นไป)
      เราเลิกรองรับ Node.js 14 แล้ว
    • Java SDK สำหรับผู้ดูแลระบบ — Java 8+
    • Admin Python SDK - Python 3.7 ขึ้นไป (แนะนำให้ใช้ Python 3.8 ขึ้นไป)
      เลิกใช้งานการรองรับ Python 3.7 แล้ว
    • Admin Go SDK — Go 1.20 ขึ้นไป
    • .NET SDK ของผู้ดูแลระบบ — .NET Framework 4.6.2 ขึ้นไป หรือ .NET Standard 2.0 สำหรับ .NET 6.0 ขึ้นไป

ตั้งค่าโปรเจ็กต์ Firebase และบัญชีบริการ

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

  • โปรเจ็กต์ 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

มีการเผยแพร่ Java SDK ของผู้ดูแลระบบ Firebase ไปยังที่เก็บส่วนกลาง Maven หากต้องการติดตั้งไลบรารี ให้ประกาศเป็นทรัพยากร Dependency ในไฟล์ build.gradle ของคุณ

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

หากใช้ Maven ในการสร้างแอปพลิเคชัน คุณจะเพิ่มทรัพยากร Dependency ต่อไปนี้ให้กับ pom.xml ได้

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

Python

Python SDK สำหรับผู้ดูแลระบบ Firebase พร้อมใช้งานผ่าน pip คุณติดตั้งไลบรารีสำหรับผู้ใช้ทุกคนได้ผ่าน sudo โดยทำดังนี้

sudo pip install firebase-admin

หรือติดตั้งไลบรารีสำหรับผู้ใช้ปัจจุบันเท่านั้นโดยการส่งแฟล็ก --user ดังนี้

pip install --user firebase-admin

Go

สามารถติดตั้ง 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/[email protected]

C#

.NET Admin SDK สามารถติดตั้งโดยใช้โปรแกรมจัดการแพ็กเกจ .NET ดังนี้

Install-Package FirebaseAdmin -Version 3.0.0

หรือติดตั้งโดยใช้ยูทิลิตีบรรทัดคำสั่ง dotnet ดังนี้

dotnet add package FirebaseAdmin --version 3.0.0

หรือติดตั้งได้ด้วยการเพิ่มรายการอ้างอิงแพ็กเกจต่อไปนี้ในไฟล์ .csproj

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

เริ่มต้น SDK

เมื่อสร้างโปรเจ็กต์ Firebase แล้ว คุณจะเริ่มต้น SDK ได้ด้วยข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชันของ Google เนื่องจากการค้นหาข้อมูลเข้าสู่ระบบเริ่มต้นจะทำงานอัตโนมัติอย่างเต็มรูปแบบในสภาพแวดล้อมของ Google และไม่จำเป็นต้องระบุตัวแปรสภาพแวดล้อมหรือการกำหนดค่าอื่นๆ เราจึงขอแนะนำอย่างยิ่งให้คุณเริ่มต้น SDK ด้วยวิธีนี้สำหรับแอปพลิเคชันที่ทำงานในสภาพแวดล้อม Google เช่น Cloud Run, App Engine และ Cloud Functions

หากต้องการระบุตัวเลือกการเริ่มต้นสำหรับบริการ เช่น Realtime Database, Cloud Storage หรือ Cloud Functions ให้ใช้ตัวแปรสภาพแวดล้อม FIREBASE_CONFIG หากเนื้อหาของตัวแปร FIREBASE_CONFIG ขึ้นต้นด้วย { ระบบจะแยกวิเคราะห์เป็นออบเจ็กต์ JSON มิเช่นนั้น SDK จะถือว่าสตริงนั้นเป็นเส้นทางของไฟล์ JSON ที่มีตัวเลือกดังกล่าว

Node.js

const app = initializeApp();

Java

FirebaseApp.initializeApp();

Python

default_app = firebase_admin.initialize_app()

Go

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 ยังมีข้อมูลเข้าสู่ระบบที่ให้คุณตรวจสอบสิทธิ์ด้วยโทเค็นการรีเฟรช 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);

Python

cred = credentials.RefreshToken('path/to/refreshToken.json')
default_app = firebase_admin.initialize_app(cred)

Go

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 ที่มีคีย์อย่างปลอดภัย

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

วิธีตั้งค่าตัวแปรสภาพแวดล้อม

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

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"

หลังจากทำตามขั้นตอนข้างต้นเสร็จแล้ว Application Default Credentials (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);

Python

default_app = firebase_admin.initialize_app()

Go

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",
});

เริ่มต้นแอปหลายรายการ

ในกรณีส่วนใหญ่ คุณจะต้องเริ่มต้นแอปเริ่มต้นเพียงแอปเดียว คุณสามารถ เข้าถึงบริการจากแอปนั้นได้ 2 วิธีดังนี้

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

Python

# 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(...)

Go

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

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

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

Python

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

Go

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

ตั้งค่าขอบเขตสำหรับ Realtime Database และการตรวจสอบสิทธิ์

หากคุณใช้ VM ของ Google Compute Engine ที่มีข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชันของ Google สำหรับฐานข้อมูลเรียลไทม์หรือการตรวจสอบสิทธิ์ โปรดตรวจสอบว่าได้ตั้งค่าขอบเขตการเข้าถึงที่ถูกต้องแล้ว สำหรับ Realtime Database และการตรวจสอบสิทธิ์ คุณต้องมีขอบเขตที่ลงท้ายด้วย 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 ที่ได้จากการเรียกใช้ gcloud auth application-default login จะต้องมีการเปลี่ยนแปลงเพิ่มเติมเพื่อใช้การตรวจสอบสิทธิ์ Firebase เนื่องจาก

  • การตรวจสอบสิทธิ์ Firebase จะไม่ยอมรับข้อมูลเข้าสู่ระบบของผู้ใช้ปลายทาง gcloud ที่สร้างขึ้นโดยใช้รหัสไคลเอ็นต์ OAuth ของ gcloud
  • การตรวจสอบสิทธิ์ 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);

Python

app_options = {'projectId': '<FIREBASE_PROJECT_ID>'}
default_app = firebase_admin.initialize_app(options=app_options)

Go

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 ลงในแอป

  • เขียนแบ็กเอนด์แบบ Serverless ด้วย Cloud Functions
  • จัดเก็บข้อมูลด้วย Realtime Database หรือข้อมูล BLOB ด้วย Cloud Storage
  • รับการแจ้งเตือนด้วย Cloud Messaging