Код ОШИБКИ N: сообщение «auth / internal-error»: «URL-адрес фотографии слишком длинный». Прототип N - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь обновить изображение профиля FireBase, используя плагин Cordova Camera. Но у меня есть ошибка. Есть идеи, пожалуйста?

   async openLibrary() {
    const options: CameraOptions = {
    quality: 70,
    destinationType: this.camera.DestinationType.DATA_URL,
    sourceType: this.camera.PictureSourceType.PHOTOLIBRARY,
    encodingType: this.camera.EncodingType.JPEG,
    saveToPhotoAlbum: false
    };
   return await this.camera.getPicture(options);
  }


  async addPhoto() {
  const libraryImage = await this.openLibrary();
  this.photoCamera = 'data:image/jpeg;base64,' + libraryImage;
  }

   enregisterPseudoo() {

   this.user.updateProfile({
     displayName: this.pseudo,
     photoURL:(this.photoCamera)
     }).then(data => {
     this.navCtrl.push(TabsPage, {
       name: this.pseudo,
       photo:(this.photoCamera),
       });
     });
       }

URL слишком длинный, пожалуйста, идея?

Ответы [ 2 ]

2 голосов
/ 19 октября 2019

photoURL в профиле пользователя в Firebase Authentication должна быть ссылкой на существующий образ. Вы пытаетесь сохранить изображение в виде URL-адреса данных, который не может обрабатывать Firebase Authentication.

Поэтому вам придется загрузить данные в службу размещения изображений (например, Cloud Storage for Firebase ), а затем сохраните полученный URL-адрес в профиле пользователя.

0 голосов
/ 22 октября 2019

это сработало для меня. сохранить изображение в хранилище Firebase, а затем получить URL

   const libraryImage = await this.openLibrary();
   this.photoCamera = 'data:image/jpeg;base64,' + libraryImage;
     let user = firebase.auth().currentUser;
     this.avatarStgRef = firebase.storage().ref("pictures" + user.uid);
     this.avatarStgRef.putString(this.photoCamera, 'data_url'); 

    this.avatarStgRef.getDownloadURL().then(
    (url)=>{
   this.user.updateProfile({
   displayName: this.pseudo,
  photoURL: url
    }).then(data => {
    this.navCtrl.push(TabsPage, {
    name: this.pseudo,
    photo: url,
     });
      });

})

...