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 參考,了解如何在文件上傳下載等用例中使用返回的存儲桶參考。