/ / Swift muestra firebase photoUrl no puede reemplazar imagen por selector de imagen: Swift, Firebase, Firebase-Authentication

Swift display firebase photoUrl no puede reemplazar imágenes por selector de imágenes - swift, firebase, firebase-authentication

Utilizo Firebase como el back-end de mi aplicación. Cuando el usuario finalice la autenticación, irá al perfil crear página. Muestra la imagen de perfil de usuario de facebook.

Yo uso este código para mostrar

func displayProfilePic(user: FIRUser?){

let photoURL = user?.photoURL
struct last {
static var photoURL: NSURL? = nil
}
last.photoURL = photoURL;  // to prevent earlier image overwrites later one.
if let photoURL = photoURL {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {
let data = NSData.init(contentsOfURL: photoURL)
if let data = data {
let image = UIImage.init(data: data)
dispatch_async(dispatch_get_main_queue(), {
if (photoURL == last.photoURL) {
self.profilePic.image = image
}
})
}
})
} else {
profilePic.image = UIImage.init(named: "DefaultPic")
}

sin embargo, Tambien permito al usuario elegir su propio perfil.Imagen por cámara o biblioteca de fotos. Cuando el usuario elija su imagen, mostrará la imagen elegida durante 1 a 2 segundos y volverá a mostrar la imagen de perfil de Facebook. Eso significa que la "imagen elegida no puede reemplazar la imagen de perfil de Facebook"

Es mi código para la cámara y la biblioteca de fotos.

func openGallary(){

if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.SavedPhotosAlbum){
print("Pick Photo")

self.imagePicker.delegate = self
self.imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
self.imagePicker.allowsEditing = true
self.presentViewController(self.imagePicker, animated: true, completion: nil)
}
}

func openCamera(){
if(UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera)){
self.imagePicker.sourceType = UIImagePickerControllerSourceType.Camera
self.imagePicker.allowsEditing = true
self.presentViewController(self.imagePicker, animated: true, completion: nil)

}else{
print("you got no camara")
}
}

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
self.dismissViewControllerAnimated(true, completion: { () -> Void in

})
profilePic.image = image
}

Respuestas

0 para la respuesta № 1

Firebase Authentication toma una foto URL, así que la ubicación pública donde una foto de perfilPara el usuario está presente. Si desea permitir que el usuario cargue una nueva foto de perfil, tendrá que encontrar un lugar para almacenar la foto y luego colocar la URL en el perfil de autenticación de Firebase.

Un lugar para mantener tal imagen de perfil sería Firebase Storage. Vea la documentación en como subir una imagen desde iOS y entonces generar una URL de descarga que almacena en el perfil de usuario.