ข้อมูลเบื้องต้นเกี่ยวกับ Admin Cloud Storage API

Cloud Storage for Firebaseจัดเก็บข้อมูลของคุณในที่เก็บข้อมูล Google Cloud Storage ซึ่งเป็นโซลูชันพื้นที่เก็บข้อมูลออบเจ็กต์ขนาดเอกซะไบต์ที่มีความพร้อมใช้งานสูงและความซ้ำซ้อนทั่วโลก Firebase Admin SDK ช่วยให้คุณเข้าถึง Cloud Storage บัคเก็ตจากสภาพแวดล้อมที่มีสิทธิ์ได้โดยตรง จากนั้นคุณจะใช้ Google Cloud Storage API เพื่อจัดการออบเจ็กต์ที่จัดเก็บไว้ในที่เก็บข้อมูลได้

นอกจากนี้ Admin SDK ยังช่วยให้คุณสร้าง URL ที่แชร์ได้เพื่อให้ผู้ใช้ดาวน์โหลดออบเจ็กต์ในที่เก็บข้อมูลได้ด้วย

นอกจากนี้ โปรดตรวจสอบว่าโปรเจ็กต์ Firebase ของคุณใช้แพ็กเกจราคา Blaze แบบจ่ายเมื่อใช้ ซึ่งเป็นข้อกำหนดที่เริ่มใช้ในเดือนตุลาคม 2024 (ดูคำถามที่พบบ่อย) หากเพิ่งเริ่มใช้ Firebase และ Google Cloud โปรดตรวจสอบว่าคุณมีสิทธิ์รับเครดิต$300 หรือไม่

ใช้ที่เก็บข้อมูลเริ่มต้น

คุณระบุชื่อที่เก็บข้อมูลเริ่มต้นได้เมื่อเริ่มต้น Admin SDK จากนั้นคุณ จะเรียกข้อมูลการอ้างอิงที่ตรวจสอบสิทธิ์แล้วไปยังที่เก็บข้อมูลนี้ได้

ชื่อที่เก็บข้อมูลต้องไม่มี gs:// หรือคำนำหน้าโปรโตคอลอื่นๆ เช่น หาก URL ของที่เก็บข้อมูลที่แสดงในคอนโซล Firebase คือ gs://PROJECT_ID.firebasestorage.app ให้ส่งสตริง PROJECT_ID.firebasestorage.app ไปยัง Admin SDK

Node.js

const { initializeApp, cert } = require('firebase-admin/app');
const { getStorage } = require('firebase-admin/storage');

const serviceAccount = require('./path/to/serviceAccountKey.json');

initializeApp({
  credential: cert(serviceAccount),
  storageBucket: '<BUCKET_NAME>.appspot.com'
});

const bucket = getStorage().bucket();

// 'bucket' is an object defined in the @google-cloud/storage library.
// See https://googlecloudplatform.github.io/google-cloud-node/#/docs/storage/latest/storage/bucket
// for more details.

Java

FileInputStream serviceAccount = new FileInputStream("path/to/serviceAccountKey.json");

FirebaseOptions options = FirebaseOptions.builder()
    .setCredentials(GoogleCredentials.fromStream(serviceAccount))
    .setStorageBucket("<BUCKET_NAME>.appspot.com")
    .build();
FirebaseApp.initializeApp(options);

Bucket bucket = StorageClient.getInstance().bucket();

// 'bucket' is an object defined in the google-cloud-storage Java library.
// See https://cloud.google.com/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.Bucket
// for more details.

Python

import firebase_admin
from firebase_admin import credentials
from firebase_admin import storage

cred = credentials.Certificate('path/to/serviceAccountKey.json')
firebase_admin.initialize_app(cred, {
    'storageBucket': 'PROJECT_ID.firebasestorage.app'
})

bucket = storage.bucket()

# 'bucket' is an object defined in the google-cloud-storage Python library.
# See https://googlecloudplatform.github.io/google-cloud-python/latest/storage/buckets.html
# for more details.

Go

import (
	"context"
	"log"

	firebase "firebase.google.com/go/v4"
	"firebase.google.com/go/v4/auth"
	"google.golang.org/api/option"
)

config := &firebase.Config{
	StorageBucket: "<BUCKET_NAME>.appspot.com",
}
opt := option.WithCredentialsFile("path/to/serviceAccountKey.json")
app, err := firebase.NewApp(context.Background(), config, opt)
if err != nil {
	log.Fatalln(err)
}

client, err := app.Storage(context.Background())
if err != nil {
	log.Fatalln(err)
}

bucket, err := client.DefaultBucket()
if err != nil {
	log.Fatalln(err)
}
// 'bucket' is an object defined in the cloud.google.com/go/storage package.
// See https://godoc.org/cloud.google.com/go/storage#BucketHandle
// for more details.

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

ใช้ที่เก็บข้อมูลที่กำหนดเอง

หากต้องการใช้ Bucket Cloud Storage อื่นที่ไม่ใช่ Bucket เริ่มต้น ที่อธิบายไว้ก่อนหน้านี้ในคู่มือนี้ หรือใช้ Bucket Cloud Storage หลายรายการใน แอปเดียว คุณสามารถดึงข้อมูลอ้างอิงไปยัง Bucket ที่กำหนดเองได้โดยทำดังนี้

Node.js

const bucket = getStorage().bucket('my-custom-bucket');

Java

Bucket bucket = StorageClient.getInstance().bucket("my-custom-bucket");

Python

bucket = storage.bucket('my-custom-bucket')

Go

 bucket, err := client.Bucket("my-custom-bucket")

ใช้แอป Firebase ที่กำหนดเอง

หากคุณกำลังสร้างแอปพลิเคชันที่ซับซ้อนมากขึ้นซึ่งโต้ตอบกับแอป Firebase หลายแอป คุณสามารถเข้าถึงที่เก็บข้อมูล Cloud Storage ที่เชื่อมโยงกับแอป Firebase ที่เฉพาะเจาะจงได้โดยทำดังนี้

Node.js

const bucket = getStorage(customApp).bucket();

Java

Bucket bucket = StorageClient.getInstance(customApp).bucket();

Python

bucket = storage.bucket(app=custom_app)

Go

otherClient, err := otherApp.Storage(context.Background())
bucket, err := otherClient.Bucket("other-app-bucket")

รับ URL การดาวน์โหลดที่แชร์ได้

คุณใช้ Admin SDK เพื่อสร้าง URL สำหรับดาวน์โหลดที่ไม่หมดอายุสำหรับ ไฟล์ที่จัดเก็บไว้ในที่เก็บข้อมูลได้ ทุกคนที่มี URL นี้จะเข้าถึงไฟล์ได้ถาวร

Node.js

const { getStorage, getDownloadURL } = require('firebase-admin/storage');

const fileRef = getStorage().bucket('my-bucket').file('my-file');
const downloadURL= await getDownloadURL(fileRef);

Google Cloud Storage ไลบรารีของไคลเอ็นต์

Firebase Admin SDK ขึ้นอยู่กับGoogle Cloud Storageไลบรารีไคลเอ็นต์ เพื่อให้สิทธิ์เข้าถึง Cloud Storage การอ้างอิงที่เก็บข้อมูลที่ Admin SDK ส่งคืนคือออบเจ็กต์ที่กำหนดไว้ในไลบรารีเหล่านี้ โปรดอ่านเอกสารประกอบและ ข้อมูลอ้างอิง API ของGoogle Cloud Storageคลังไคลเอ็นต์เพื่อดูวิธี ใช้ข้อมูลอ้างอิงของที่เก็บข้อมูลที่ส่งคืนในกรณีการใช้งาน เช่น การอัปโหลดและ การดาวน์โหลดไฟล์