מבוא ל-Admin Cloud Storage API

Cloud Storage for Firebase מאחסן את הנתונים שלכם בקטגוריה Google Cloud Storage – פתרון לאחסון אובייקטים בקנה מידה של אקסה-בייט עם זמינות גבוהה ויתירות גלובלית. ‫SDK של Firebase לאדמינים מאפשר לכם לגשת ישירות לקטגוריות שלכם מתוך סביבות בעלות הרשאות.Cloud Storage אחר כך תוכלו להשתמש ב-Google Cloud Storage APIs כדי לבצע מניפולציות באובייקטים שמאוחסנים בקטגוריות.

Admin SDK מאפשר גם ליצור כתובות URL שניתנות לשיתוף, כדי שהמשתמשים יוכלו להוריד אובייקטים מהקטגוריות שלכם.

חשוב לוודא שהפרויקט שלכם ב-Firebase נמצא בתוכנית התמחור Blaze בתשלום לפי שימוש, שנדרשת לשימוש ב-Cloud Storage for Firebase. אם אתם משתמשים חדשים ב-Firebase וGoogle Cloud, כדאי לבדוק אם אתם זכאים לקרדיט לתקופת ניסיון בחינם בשווי 300$.

שימוש בקטגוריית ברירת מחדל

כשמפעילים את Admin SDK, אפשר לציין שם קטגוריה שמוגדר כברירת מחדל. אחר כך תוכלו לאחזר הפניה מאומתת לקטגוריה הזו.

שם הקטגוריה לא יכול להכיל את gs:// או קידומות פרוטוקול אחרות. לדוגמה, אם כתובת ה-URL של מאגר הנתונים (bucket) שמוצגת במסוף Firebase היא gs://PROJECT_ID.firebasestorage.app, צריך להעביר את המחרוזת PROJECT_ID.firebasestorage.app אל 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.

Java

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 https://cloud.google.com/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.Bucket
// 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': 'PROJECT_ID.firebasestorage.app'
})

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.

אפשר להשתמש בהפניות ל-bucket שמוחזרות על ידי Admin SDK בשילוב עם ספריות הלקוח הרשמיות של Google Cloud Storage כדי להעלות, להוריד ולשנות תוכן ב-buckets שמשויכים לפרויקטים של Firebase. שימו לב: אין צורך לאמת ספריות כשמשתמשים ב-SDK של Firebase לאדמינים.Google Cloud Storage הפניות ל-bucket שמוחזרות על ידי Admin SDK כבר מאומתות באמצעות פרטי הכניסה שמשמשים לאתחול אפליקציית Firebase.

שימוש בקטגוריות בהתאמה אישית

אם רוצים להשתמש בקטגוריית Cloud Storage שונה מקטגוריית ברירת המחדל שמתוארת בהמשך המדריך הזה, או להשתמש בכמה קטגוריות Cloud Storage באפליקציה אחת, אפשר לאחזר הפניה לקטגוריה מותאמת אישית:

Node.js

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

Java

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

Python

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();

Java

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")

קבלת כתובת 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 Admin תלויות בספריות הלקוח של Google Cloud Storage כדי לספק גישה ל-Cloud Storage. ההפניות לקטגוריות שמוחזרות על ידי Admin SDK הן אובייקטים שמוגדרים בספריות האלה. כדי ללמוד איך להשתמש בהפניות לקטגוריות שמוחזרות בתרחישי שימוש כמו העלאה והורדה של קבצים, אפשר לעיין במסמכי התיעוד ובהפניות ל-API של ספריות הלקוח של Google Cloud Storage.