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

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

  • อ่านและเขียนข้อมูล Realtime Database ด้วยสิทธิ์ของผู้ดูแลระบบโดยสมบูรณ์
  • ส่งข้อความ Firebase Cloud Messaging แบบเป็นโปรแกรมโดยใช้วิธีการที่เรียบง่ายและเป็นทางเลือกให้กับโปรโตคอลเซิร์ฟเวอร์ 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 Multicast
จัดการการสมัครรับข้อมูลหัวข้อ FCM
พื้นที่เก็บข้อมูลระบบคลาวด์
Cloud Firestore
จัดคิวฟังก์ชันด้วย Cloud Tasks
การจัดการโครงการ
กฎความปลอดภัย
การจัดการโมเดล ML
การกำหนดค่าระยะไกลของ Firebase
การตรวจสอบแอป Firebase
ส่วนขยาย Firebase

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

สิ่งที่ต้องดำเนินการก่อน

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

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

    • Admin Node.js SDK — Node.js 14+ (แนะนำ Node.js 18+)
      เราเลิกรองรับ Node.js 14 และ 16 แล้ว
    • Admin Java SDK — Java 8+
    • Admin Python SDK — Python 3.7 ขึ้นไป (แนะนำให้ใช้ Python 3.8 ขึ้นไป)
      เราเลิกรองรับ Python 3.7 แล้ว
    • Admin Go SDK — Go 1.20 ขึ้นไป
    • Admin .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

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

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

หากใช้ Maven เพื่อสร้างแอปพลิเคชัน คุณจะเพิ่มการขึ้นต่อกันต่อไปนี้ให้กับ 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/v4@4.14.1

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"

หลังจากที่ทำตามขั้นตอนข้างต้นเสร็จแล้ว ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน (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;

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

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

หากคุณใช้ 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 ที่สร้างขึ้นโดยใช้รหัสไคลเอ็นต์ 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);

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