Catch up on highlights from Firebase at Google I/O 2023. Learn more

Admin Cloud Storage API 簡介

Cloud Storage for Firebase 將您的數據存儲在Google Cloud Storage 存儲桶中——一種具有高可用性和全局冗餘的 EB 級對象存儲解決方案。 Firebase Admin SDK 允許您直接從特權環境訪問您的 Cloud Storage 存儲桶。然後,您可以使用Google Cloud Storage API來操作存儲在存儲桶中的對象。

使用默認存儲桶

您可以在初始化 Admin SDK 時指定默認存儲桶名稱。然後您可以檢索對此存儲桶的經過身份驗證的引用。存儲桶名稱不得包含gs://或任何其他協議前綴。例如,如果Firebase 控制台中顯示的存儲桶 URL 是gs://bucket-name.appspot.com ,則將字符串bucket-name.appspot.com傳遞給 Admin SDK。

節點.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.

爪哇

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': '<BUCKET_NAME>.appspot.com'
})

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.

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 項目關聯的存儲桶中的內容。請注意,在使用 Firebase Admin SDK 時,您不必對 Google Cloud Storage 庫進行身份驗證。 Admin SDK 返回的存儲桶引用已經使用用於初始化您的 Firebase 應用的憑據進行了身份驗證。

使用自定義存儲桶

如果您想使用除上面提供的默認值之外的 Cloud Storage 存儲桶,或者在單個應用程序中使用多個 Cloud Storage 存儲桶,您可以檢索對自定義存儲桶的引用,如下所示:

節點.js

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

爪哇

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

Python

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

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

使用自定義 Firebase 應用

如果您正在構建一個與多個 Firebase 應用程序交互的更複雜的應用程序,您可以訪問與特定 Firebase 應用程序關聯的 Cloud Storage 存儲桶,如下所示:

節點.js

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

爪哇

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

Python

bucket = storage.bucket(app=custom_app)

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

Google Cloud Storage 客戶端庫

Firebase Admin SDK 依賴於Google Cloud Storage 客戶端庫來提供 Cloud Storage 訪問。 Admin SDK 返回的存儲桶引用是這些庫中定義的對象。請參閱 Google Cloud Storage 客戶端庫的文檔和 API 參考,了解如何在文件上傳下載等用例中使用返回的存儲桶引用。