【发布时间】:2020-03-19 23:51:23
【问题描述】:
大家好,我正在使用 Firebase 身份验证,我允许用户使用他的电子邮件和发送到他的电子邮件的验证链接登录.. .
一切正常,但使用 iOS 13 我必须使用 SceneDelegate 而不是 AppDelegate 并且在函数 scene method (_ scene: UIScene, continue userActivity: NSUserActivity)我收到一个警告,警告我我没有调用结果flatMap 调用。
谁能帮我解决这个警报?
调用“flatMap”的结果未使用
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
userActivity.webpageURL.flatMap(handlePasswordlessSignIn)
}
func handlePasswordlessSignIn(withURL: URL) -> Bool {
let link = withURL.absoluteString
if Auth.auth().isSignIn(withEmailLink: link) {
guard let email = UserDefaults.standard.value(forKey: FirebaseUserAuthWithLink.email) as? String else {
print("L'email utilizzata per accedere non esiste")
return true
}
Auth.auth().signIn(withEmail: email, link: link) { (user, error) in
if let error = error {
print(error.localizedDescription)
return
}
guard let user = user else {
print(" Authentication con Link Fallita")
return
}
let uid = user.user.uid
print("Autenticazione Riuscita")
let data = [
"email" : email
] as [String : Any]
Firestore.firestore().collection("Users").document(uid).setData(data) { (error) in
if let error = error {
print(error.localizedDescription)
return
}
}
}
return true
}
return false
}
按照实现教程,队列的所有示例都参考 AppDelegate 而我尝试更新在 SceneDelegate 上工作的代码
【问题讨论】:
-
那行代码打算做什么?
-
@matt 我更新了我的代码...当用户收到电子邮件中的链接时,我调用 Firebase 以通过电子邮件完成身份验证流程...当他返回应用程序时,他登录在
-
@matt 我做错了吗?
-
很好,但你还没有回答我的问题。如果您只想打电话给
handlePasswordlessSignIn,那么打电话给flatMap的目的是什么?它只是应该是一种优雅的方式来处理userActivity.webpageURL是一个可选的事实。现在我们遇到了一个新问题:声明handlePasswordlessSignIn返回一个Bool 的目的是什么?您正在丢弃flatMap的结果 并且 您正在丢弃handlePasswordlessSignIn的结果。 -
@matt 问题是从 appDelegate 到 SceneDelegate 我无法找到此代码的更新...
passwordlessSignIn在 firebase 中验证我的用户的身份验证因此我该如何制作这部分“对”而不使用func scene (_ scene: UIScene, continue userActivity: NSUserActivity)?
标签: ios swift firebase appdelegate uiscenedelegate