簡體   English   中英

如何在shoudPerformSegueWithIdentifier和Firebase中對用戶進行身份驗證?

[英]How do I authenticate users in shoudPerformSegueWithIdentifier and Firebase?

我正在嘗試使用IOS swift和Firebase在情節提要中創建身份驗證頁面。 這是我的Storyboardsegue聲明: 在此處輸入圖片說明

然后,我正在使用shouldPerformSegueWithIdentifier進行身份驗證。 但是,我還要在Firebase中登錄用戶,因此我的代碼如下所示:

override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool {
if db.authData != nil {

  return true

} else {

  let email = emailTextField.text
  let password = passwordTextField.text

  db.authUser(email, password: password, withCompletionBlock: {
    error, authData in
    if error != nil {
      print(error.description)
    } else {
      print("logged in")
    }
  })

  return false
}

}

該代碼有些奏效,但我必須單擊兩次登錄按鈕,因為第一次是在Firebase中登錄用戶,而第二次db.authData不再是nil,因為用戶已經登錄,因此返回true。 我不想單擊兩次以登錄,我只想單擊一次。 我不能只將return truereturn false放到withCompletionBlock ,因為該塊返回void。 我該如何工作?

使用當前的實現,您將無法實現此功能。 您有兩種方法可以做到這一點:

  1. 使db.authUser()同步並返回結果
  2. 無需將登錄按鈕segue連接到下一個屏幕,而是添加IBAction方法並實現類似

@IBAction func login(sender : AnyObject?)
{
   let email = emailTextField.text
   let password = passwordTextField.text

   db.authUser(email, password: password, withCompletionBlock: {
     error, authData in
       if error != nil
       {
          print(error.description)
       }
       else
       {
          // Navigate to next screen
          // Start perform segue here
       }
    })  
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM