На самом деле не лучший способ материализовать связь между изображением аватара, которое вы храните в облачном хранилище, и конкретным c пользователем вашего проекта Firebase.
Вы может очень хорошо поступить так, как вы делаете (имея «поле в пользовательском объекте, которое ссылается на URL-адрес загрузки»).
Другим подходом будет сохранение изображений аватара в публикации c «папка» в вашем ведре по умолчанию, используя UID пользователя для имени аватара (см. Примечание «папки») внизу.
Затем вы можете использовать ссылку со следующим структура для прямой загрузки изображения (или включения его в тег img src
HTML)
https://firebasestorage.googleapis.com/v0/b/<yourprojectname>.appspot.com/o/users%2F38r174prM9aTx4JAdcm50r3V0Hq2.png?alt=media
, где users
- это имя "папки", предназначенной для публикации c аватара изображений
и 38r174prM9aTx4JAdcm50r3V0Hq2.png
- это имя файла изображения для указанного пользователя c (т. Е. Пользовательский UId + png
расширение).
Обратите внимание, что /
кодируется как %2F
(стандартная кодировка URL).
Затем вы должны установить свой облачный хранилище Правила Rity, например, следующие:
service firebase.storage {
match /b/{bucket}/o {
match /privateFiles { //All other files that are not under users
match /{allprivateFiles=**} {
allow read: if false;
allow write: .....
}
}
match /users/{userId} { //Public "folder"
allow read;
}
}
}
Примечание: На самом деле Google Cloud Storage не имеет настоящих «папок», но с использованием символа «/» в файле путь будет вести себя аналогично папкам. В частности, консоль Firebase будет отображать файлы, организованные в папки.