Как исправить ошибку «Firebase Storage: у пользователя нет прав доступа», даже если я знаю, что он вошел в систему - PullRequest
0 голосов
/ 05 ноября 2019

Я новичок в Angular и Firebase. Вот моя проблема, когда я загружаю изображение в Firebase Storage, используя следующий метод. Когда я загружаю изображение, изображение, даже пользователь, кажется, вошел в систему, но консоль говорит, что «Firebase Storage: у пользователя нет прав доступа к объекту». Мне интересно, что я должен сделать для этого?

Код, который я использую, является последним Angular и Ionic для библиотеки. До этого я пытался изменить правила в Firebase Storage, однако все эти попытки провалились

profile.page.ts:

export interface Image {
  id: string;
  image: string;
}

@Component({
  selector: 'app-profile',
  templateUrl: './profile.page.html',
  styleUrls: ['./profile.page.scss'],

})

export class ProfilePage {

  public isPublic: boolean;

  validations_form: FormGroup;
  // matching_passwords_group: FormGroup;
  errorMessage: string = '';
  successMessage: string = '';



 url: any;
 newImage: Image = {
  id: this.afs.createId(), image: ''
 }
 loading: boolean = false;
 downloadURL: any;
  userEmail: string;
;


  uploadImage(event) {

    var user = firebase.auth().currentUser;


    console.log(user.email);

    this.loading = false;
    if (event.target.files && event.target.files[0]) {
      var reader = new FileReader();

      reader.readAsDataURL(event.target.files[0]);
      // For Preview Of Image
      reader.onload = (e:any) => { // called once readAsDataURL is completed
        this.url = e.target.result;

        // For Uploading Image To Firebase
        const fileraw = event.target.files[0];
        console.log(fileraw)


        const filePath = '/Style/' + user.uid + '/Image' + (Math.floor(1000 + Math.random() * 9000) + 1);
        const result = this.SaveImageRef(filePath, fileraw);
        const ref = result.ref;
        result.task.then(a => {
          ref.getDownloadURL().subscribe(a => {
            console.log(a);

            this.newImage.image = a;
            this.loading = false;

          });

          this.afs.collection("Style").doc(user.uid).set(this.newImage);

        });
      }, error => {
        alert("Error");
      }

    }

  }



  SaveImageRef(filePath, file) {

    return {
      task: this.afStorage.upload(filePath, file)
      , ref: this.afStorage.ref(filePath)
    };
  }

Мое правило безопасности:

service firebase.storage {
  match /b/{bucket}/o {
        match /{allPaths=**} {
           allow read, write,create,delete;
        }
       }

Ожидается, что пользователь авторизован и имеет полный доступ к хранилищу Firebase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...