获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

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 参考,了解如何在文件上传下载等用例中使用返回的存储桶参考。