我的应用程序是通过匿名身份验证登录的,我在 SwiftUI
上有一个用于从 iPhone 上传用户照片的类,但是,将照片上传到 Firebase
存储时,我收到错误消息:
用户未通过身份验证,请使用 Firebase 进行身份验证 验证并重试。
这是我的代码:
AuthViewModel.kt
:
class AuthViewModel: NSObject, ObservableObject {
@Published var userID = ""
func login() {
Auth.auth().signInAnonymously { (res, err) in
if err != nil {
print(err!.localizedDescription)
return
}
print("Success = \(res!.user.uid)")
self.userID = res!.user.uid
}
}
}
UserViewModel
:
func setCurrentUserImage(profileImage: UIImage) {
guard let imageData = profileImage.jpegData(compressionQuality: 0.3) else { return }
let filename = NSUUID().uuidString
let storageRef = Storage.storage().reference().child("UserPhotos").child("\(self.currentUser)/\(filename)")
storageRef.putData(imageData, metadata: nil) { _, error in
if let error = error {
print("Upload Image error: \(error.localizedDescription)")
return
}
storageRef.downloadURL { url, _ in
guard let profileImageURL = url?.absoluteString else { return }
let docRef = self.db.collection("users").document(self.currentUser)
docRef.getDocument(source: .cache) { (snap, err) in
guard let curUser = snap else { return }
curUser.reference.updateData(["userImage" : profileImageURL])
}
}
}
}
Firebase 存储安全规则:
match /{allPaths=**} {
allow read, write;
}