Cloud Storage for Firebaseจัดเก็บข้อมูลของคุณในที่เก็บข้อมูล Google Cloud Storage ซึ่งเป็นโซลูชันพื้นที่เก็บข้อมูลออบเจ็กต์ขนาด Exabyte ที่มีความพร้อมใช้งานสูงและข้อมูลซ้ำซ้อนทั่วโลก Firebase Admin SDK ช่วยให้คุณเข้าถึงที่เก็บข้อมูล Cloud Storage โดยตรงจากสภาพแวดล้อมที่มีสิทธิ์ จากนั้นคุณจะใช้ Google Cloud Storage API เพื่อจัดการออบเจ็กต์ที่จัดเก็บไว้ในที่เก็บข้อมูลได้
นอกจากนี้ Admin SDK ยังให้คุณสร้าง URL ที่แชร์ได้เพื่อให้ผู้ใช้ดาวน์โหลดออบเจ็กต์ในที่เก็บข้อมูลได้อีกด้วย
ใช้ที่เก็บข้อมูลเริ่มต้น
คุณสามารถระบุชื่อที่เก็บข้อมูลเริ่มต้นเมื่อเริ่มต้น 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 http://googlecloudplatform.github.io/google-cloud-java/latest/apidocs/com/google/cloud/storage/Bucket.html
// 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 ข้อมูลอ้างอิงที่เก็บข้อมูลซึ่ง Admin SDK แสดงผลได้รับการตรวจสอบสิทธิ์ด้วยข้อมูลเข้าสู่ระบบที่ใช้เพื่อเริ่มต้นแอป Firebase อยู่แล้ว
ใช้ที่เก็บข้อมูลที่กำหนดเอง
หากต้องการใช้ที่เก็บข้อมูล Cloud Storage ที่ไม่ใช่ที่เก็บข้อมูลเริ่มต้นที่อธิบายไว้ก่อนหน้านี้ในคู่มือนี้ หรือใช้ที่เก็บข้อมูล Cloud Storage หลายรายการในแอปเดียว คุณสามารถเรียกข้อมูลอ้างอิงไปยังที่เก็บข้อมูลที่กำหนดเองได้โดยทำดังนี้
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 เพื่อดูวิธีใช้ข้อมูลอ้างอิงบัケットที่แสดงผลใน Use Case เช่น การอัปโหลดและการดาวน์โหลดไฟล์