Admin Cloud Storage API 简介

Cloud Storage for Firebase 可将您的数据存储在 Google Cloud Storage 中,这是一种 EB 级对象存储解决方案,不仅可用性高,还能实现全局冗余。借助 Firebase Admin SDK,您可以从特权环境直接访问您的 Google Cloud Storage 存储分区,然后可以使用 Google Cloud Storage API 来操控存储分区中存储的对象。

使用默认存储分区

您可以在初始化 Admin SDK 时指定默认存储分区的名称,然后可以检索对该存储分区的经过身份验证的引用。存储分区名称不得包含 gs:// 或任何其他协议前缀。例如,如果 Firebase 控制台中显示的存储分区网址为 gs://bucket-name.appspot.com,请将字符串 bucket-name.appspot.com 传递给 Admin SDK。

Node.js

var admin = require("firebase-admin");

var serviceAccount = require("path/to/serviceAccountKey.json");

admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    storageBucket: "<BUCKET_NAME>.appspot.com"
});

var bucket = admin.storage().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 = new 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://google-cloud-python.readthedocs.io/en/latest/storage/buckets.html
# for more details.

Go

import (
	"log"

	"golang.org/x/net/context"

	firebase "firebase.google.com/go"
	"firebase.google.com/go/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 应用的凭据进行身份验证。

使用自定义存储分区

如果要使用除上文介绍的默认存储分区以外的存储分区,或在单个应用中使用多个存储分区,您可以检索对自定义存储分区的引用,如下所示:

Node.js

var bucket = admin.storage().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 应用交互的更复杂的应用,可以使用与特定 Firebase 应用关联的存储分区,如下所示:

Node.js

var bucket = customApp.storage().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")

Google Cloud Storage 客户端库

Firebase Admin SDK 依赖 Google Cloud Storage 客户端库来提供 Cloud Storage 访问权限。Admin SDK 返回的存储分区引用是在这些库中定义的对象。请参阅 Google Cloud Storage 客户端库的相关文档和 API 参考,了解如何在文件上传和下载等用例中使用返回的存储分区引用。

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面