/ /素早く表示されたfirebase photoUrlはイメージピッカーによる画像を置き換えることはできません - 迅速、firebase、firebase認証

素早く表示されたfirebase photoUrlはイメージピッカーによる画像を置き換えることはできません - 迅速、firebase、firebase認証

私はFirebaseを私のアプリのバックエンドとして使用しています。ユーザーが認証を完了すると、プロフィール作成ページに移動します。それは、Facebookからのユーザープロフィール画像を表示します。

私はこのコードを使って

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")
}

しかしながら、私はまた、ユーザーが自分のプロファイルを選ぶことができますカメラまたは写真ライブラリ別画像。ユーザーが画像を選択すると、選択した画像が1〜2秒間表示され、Facebookのプロフィール画像が表示されます。 つまり、「選択した画像は、Facebookのプロフィール画像を置き換えることができません」ということです

それはカメラと写真ライブラリのための私のコードです

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
}

回答:

回答№1は0

Firebase認証は写真を撮る URL、プロフィール写真が公開されている場所ユーザーが存在するためです。ユーザーが新しいプロフィール写真をアップロードできるようにするには、写真を保存する場所を見つけて、そのURLをFirebase認証プロフィールに入れなければなりません。

そのようなプロフィール画像を保持する場所は、Firebase Storageです。次のドキュメントを参照してください。 iOSから画像をアップロードする方法 その後 ダウンロードURLを生成する ユーザープロファイルに保存します。