Введение в API административного облачного хранилища

Cloud Storage for Firebase хранит ваши данные в корзине Google Cloud Storage — решении для хранения объектов масштаба в эксабайтах с высокой доступностью и глобальной избыточностью. Firebase Admin SDK позволяет вам напрямую получать доступ к корзинам Cloud Storage из привилегированных сред. Затем вы можете использовать API-интерфейсы Google Cloud Storage для управления объектами, хранящимися в корзинах.

Admin SDK также позволяет создавать общие URL-адреса, чтобы пользователи могли загружать объекты в ваши корзины.

Использовать сегмент по умолчанию

Вы можете указать имя сегмента по умолчанию при инициализации Admin SDK. Затем вы можете получить проверенную ссылку на этот сегмент. Имя сегмента не должно содержать gs:// или других префиксов протокола. Например, если URL-адрес сегмента, отображаемый в консоли Firebase ,gs://bucket-name.appspot.com , передайте строку bucket-name.appspot.com в Admin SDK.

Node.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.

Питон

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

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

Ява

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

Питон

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

Идти

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

Используйте собственное приложение Firebase

Если вы создаете более сложное приложение, которое взаимодействует с несколькими приложениями Firebase , вы можете получить доступ к сегментам Cloud Storage , связанным с конкретным приложением Firebase, следующим образом:

Node.js

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

Ява

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

Питон

bucket = storage.bucket(app=custom_app)

Идти

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

Получите общий URL-адрес для загрузки

Вы можете использовать Admin SDK для создания URL-адреса загрузки с неограниченным сроком действия для файлов, хранящихся в ваших корзинах. Любой, у кого есть этот URL-адрес, может получить постоянный доступ к файлу.

Node.js

const { getStorage, getDownloadURL } = require('firebase-admin/storage');

const fileRef = getStorage().bucket('my-bucket').file('my-file');
const downloadURL= await getDownloadURL(fileRef);

Клиентские библиотеки Google Cloud Storage

SDK администратора Firebase зависят от клиентских библиотек Google Cloud Storage для обеспечения доступа Cloud Storage . Ссылки на сегменты, возвращаемые Admin SDK, представляют собой объекты, определенные в этих библиотеках. Обратитесь к документации и справочникам по API клиентских библиотек Google Cloud Storage чтобы узнать, как использовать возвращенные ссылки на сегменты в таких случаях, как загрузка и скачивание файлов.