Giới thiệu về Admin Cloud Storage API

Cloud Storage for Firebase lưu trữ dữ liệu của bạn trong một vùng chứa Google Cloud Storage – một giải pháp lưu trữ đối tượng ở quy mô exabyte với tính sẵn sàng cao và tính dự phòng toàn cầu. Firebase Admin SDK cho phép bạn truy cập trực tiếp vào các vùng chứa Cloud Storage từ các môi trường có đặc quyền. Sau đó, bạn có thể sử dụng API Google Cloud Storage để thao tác với các đối tượng được lưu trữ trong các vùng chứa.

Admin SDK cũng cho phép bạn tạo URL có thể chia sẻ để người dùng có thể tải các đối tượng xuống trong các vùng chứa của bạn.

Sử dụng bộ chứa mặc định

Bạn có thể chỉ định tên nhóm mặc định khi khởi chạy Admin SDK. Sau đó, bạn có thể truy xuất một thông tin tham chiếu đã xác thực đến nhóm này.

Tên nhóm lưu trữ không được chứa gs:// hoặc bất kỳ tiền tố giao thức nào khác. Ví dụ: nếu URL của nhóm hiển thị trong bảng điều khiển Firebasegs://PROJECT_ID.firebasestorage.app, hãy truyền chuỗi PROJECT_ID.firebasestorage.app đến 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.

Tìm

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.

Bạn có thể sử dụng các thông tin tham chiếu đến vùng chứa do Admin SDK trả về cùng với Google Cloud Storagethư viện ứng dụng chính thức để tải lên, tải xuống và sửa đổi nội dung trong các vùng chứa được liên kết với dự án Firebase của bạn. Xin lưu ý rằng bạn không cần xác thực các thư viện Google Cloud Storage khi sử dụng Firebase Admin SDK. Các tham chiếu đến vùng chứa do Admin SDK trả về đã được xác thực bằng thông tin đăng nhập dùng để khởi chạy ứng dụng Firebase của bạn.

Sử dụng nhóm tuỳ chỉnh

Nếu muốn sử dụng một vùng chứa Cloud Storage khác với vùng chứa mặc định được mô tả trước đó trong hướng dẫn này hoặc sử dụng nhiều vùng chứa Cloud Storage trong một ứng dụng, bạn có thể truy xuất một tham chiếu đến vùng chứa tuỳ chỉnh:

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

Tìm

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

Sử dụng ứng dụng Firebase tuỳ chỉnh

Nếu đang tạo một ứng dụng phức tạp hơn tương tác với nhiều ứng dụng Firebase, bạn có thể truy cập vào các vùng chứa Cloud Storage được liên kết với một ứng dụng Firebase cụ thể như sau:

Node.js

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

Java

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

Python

bucket = storage.bucket(app=custom_app)

Tìm

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

Nhận URL tải xuống có thể chia sẻ

Bạn có thể sử dụng Admin SDK để tạo URL tải xuống không hết hạn cho các tệp được lưu trữ trong các vùng chứa của mình. Bất kỳ ai có URL này đều có thể truy cập vĩnh viễn vào tệp.

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 thư viện ứng dụng

Firebase Admin SDK phụ thuộc vào Google Cloud Storagethư viện ứng dụng để cung cấp quyền truy cập Cloud Storage. Các tham chiếu đến bộ chứa do Admin SDK trả về là các đối tượng được xác định trong những thư viện này. Tham khảo tài liệu và tài liệu tham khảo API của thư viện ứng dụng Google Cloud Storage để tìm hiểu cách sử dụng các tài liệu tham khảo về nhóm được trả về trong các trường hợp sử dụng như tải lêntải xuống tệp.