مقدّمة عن Admin Cloud Storage API

تخزِّن Cloud Storage for Firebase بياناتك في حزمة Google Cloud Storage، وهي حلّ تخزين كائنات على مستوى إكسابايت يتسم بمدى توفّر مرتفع ومتعدّد احتياطيًا على مستوى عالمي. تسمح لك حزمة تطوير البرامج (SDK) الخاصة بالمشرفين في Firebase بالوصول مباشرةً إلى Cloud Storage حِزمك من البيئات المميّزة. يمكنك بعد ذلك استخدام Google Cloud Storage واجهات برمجة التطبيقات لمعالجة العناصر المخزّنة في الحِزم.

تتيح لك Admin SDK أيضًا إنشاء عناوين URL قابلة للمشاركة ليتمكّن المستخدمون من تنزيل العناصر المتوفّرة في حِزمك.

استخدام حزمة تلقائية

يمكنك تحديد اسم حزمة تلقائي عند إعداد حزمة Admin SDK. ثم يمكنك استرداد مرجع تمت مصادقته إلى هذه الحزمة.

يجب ألّا يحتوي اسم الحزمة على gs:// أو أي بادئات بروتوكول أخرى. على سبيل المثال، إذا كان عنوان URL للحزمة المعروض في وحدة تحكّم 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.

جافا

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': '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.

يمكنك استخدام مراجع الحِزم التي تعرضها حزمة Admin SDK مع مكتبات العميل الرسمية Google Cloud Storage لتحميل المحتوى وتنزيله وتعديله في الحِزم المرتبطة بمشاريعك على Firebase. يُرجى العِلم أنّه ليس عليك مصادقة مكتبات Google Cloud Storage عند استخدام حزمة تطوير البرامج (SDK) للمشرف في Firebase. سبق أن تمّت مصادقة مراجع الحزمة التي تعرضها حزمة Admin SDK باستخدام بيانات الاعتماد المستخدَمة لإعداد تطبيقك على Firebase.

استخدام حِزم مخصّصة

إذا كنت تريد استخدام حزمة Cloud Storage غير الحزمة التلقائية الموضّحة سابقًا في هذا الدليل أو استخدام عدة حِزم Cloud Storage في تطبيق واحد، يمكنك استرداد مرجع إلى حزمة مخصَّصة:

Node.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 متعددة، يمكنك الوصول إلى حِزم Cloud Storage المرتبطة بتطبيق معيّن على Firebase على النحو التالي:

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

الحصول على عنوان 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 هي عناصر محدّدة في هذه المكتبات. يمكنك الرجوع إلى المستندات ومقاييس واجهة برمجة التطبيقات لمكتبات عملاء Google Cloud Storage للتعرّف على كيفية استخدام مراجع الحِزم التي يتم عرضها في حالات الاستخدام، مثل تحميل الملفات وتنزيلها.