Облачное хранилище для Firebase хранит ваши данные в корзине Google Cloud Storage - решении для хранения объектов в масштабе эксабайт с высокой доступностью и глобальной избыточностью. SDK Firebase Admin позволяет получить прямой доступ к сегментам облачного хранилища из привилегированных сред. Затем вы можете использовать API Google Cloud Storage для управления объектами, хранящимися в корзинах.
Использовать сегмент по умолчанию
Вы можете указать имя сегмента по умолчанию при инициализации Admin SDK. Затем вы можете получить аутентифицированную ссылку на этот сегмент. Имя сегмента не должно содержать префиксов gs://
или других протоколов. Например, если URL-адрес gs://bucket-name.appspot.com
, отображаемый в консоли 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.
Ява
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. Обратите внимание, что вам не нужно аутентифицировать библиотеки Google Cloud Storage при использовании Firebase Admin SDK. Ссылки на корзины, возвращаемые Admin SDK, уже аутентифицированы с использованием учетных данных, используемых для инициализации вашего приложения Firebase.
Используйте настраиваемые сегменты
Если вы хотите использовать сегмент Cloud Storage, отличный от указанного выше по умолчанию, или использовать несколько сегментов Cloud Storage в одном приложении, вы можете получить ссылку на настраиваемый сегмент, как показано ниже:
Node.js
var bucket = admin.storage().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, следующим образом:
Node.js
var bucket = customApp.storage().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
Пакеты SDK администратора Firebase зависят от клиентских библиотек Google Cloud Storage для обеспечения доступа к облачному хранилищу. Ссылки на сегменты, возвращаемые Admin SDK, являются объектами, определенными в этих библиотеках. Обратитесь к документации и справочным материалам по API клиентских библиотек Google Cloud Storage, чтобы узнать, как использовать возвращенные ссылки на сегменты в таких случаях, как загрузка и скачивание файлов .