Swift – 进行身份验证并同时从 Firebase 获取用户 ID

问题描述 投票:0回答:1

对 Swift 非常陌生,只是遵循一些教程

我有一个

loginViewViewModel
,具有登录用户的功能。

但是,我还想在

uid
之后从 Firebase 获取
.signIn
并打印到控制台。我计划将此
uid
用于其他目的,但想确保我可以首先成功地将其打印到控制台

下面是我的

loginViewViewModel
和登录功能

class LoginViewViewModel: ObservableObject {
    @Published var email = ""
    @Published var password = ""

    init() {}
        
    func login(){
        // try to log in
        Auth.auth().signIn(withEmail: email, password: password)
        
        // fetch user id
        guard let userId = Auth.auth().currentUser?.uid else { return }
        print("Logging firebase user \(userId)")
    
    }
}

我构建了我的应用程序,但成功登录后没有任何内容打印到控制台。

我做错了什么?

swift firebase firebase-authentication
1个回答
0
投票

所以我认为这里的问题是,当您调用

Auth.auth().signIn
时,这是请求 firebase 使用给定的凭据对用户进行身份验证,直到 firebase 发回结果为止
Auth.auth().currentUser

Firebase 文档有这个示例。

Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
  guard let strongSelf = self else { return }
  // ...
}

如果您将打印语句移至该闭包内(并且提供的凭据正确),那么这应该可以解决您的问题。在此闭包中,您还会获得一个

authResult
error
您应该使用它来处理失败的登录等。

总结起来应该是这样的:

Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
  guard let self = self else { return }

  guard let userId = Auth.auth().currentUser?.uid else { return }
  print("Logging firebase user \(userId)")
}
© www.soinside.com 2019 - 2024. All rights reserved.