[APP開發-使用Swift] 21–1. Firebase — 實作登入功能

Chiwen Lai
6 min readOct 26, 2017

--

在前一篇文章中,我們設定好了Firebase Framework,接下來,我們要開始Login功能的實作。直接使用Firebase Authentication的功能。

  1. 先進到Firebase Console,選擇Authentication → 登入方式 → 電子郵件/密碼啟用,按下儲存。

2. 回到我們的專案,拉一個View Controller

3. LoginViewController

  • 將View Controller畫面設計如下,包含1個Label、2個Text Box、2個Button。
  • 新增一個檔案,選擇New File → Cocoa Touch Class,新增LoginViewController.swift檔案,在Storyboard將兩者串連好。

4. 開啟終端機,輸入open -a Xcode Podfile ,用Xcode編輯Podfile,加入pod 'Firebase/Auth' ,儲存檔案之後,再回到終端機輸入pod install 。如此,我們已將Firebase Authentication的Framework加到我們的專案中。

5. 我們先從註冊新帳號開始,從Storyboard拉一個Action到LoginViewController,建立signUpAction。

signUpAction程式碼如下:

我們利用UIAlertController建立一個註冊的對話框,使用者輸入Email、密碼後到Firebase註冊一個新帳號。

利用Firebase 內建的Method即可新增帳號。

func createUser(withEmail email: String, password: String, completion: AuthResultCallback? = nil)

6. 執行看看,按下註冊按鈕可跳出對話框。

7. 按下儲存後,更新Firebase使用者的網頁,就可以看到新增的帳號。

內建密碼需超過6個字元,自動做檢查。

還有Email重複的檢查。

註冊新帳號之後,接下來開始我們的登入功能

  1. 從「登入」按鈕拉一個IBAction到LoginViewController內。

加入程式碼,利用Firebase Method,將我們Text Field輸入的Email、密碼帶入即可登入,用一個Alert選單處理登入錯誤時的動作。

func signIn(withEmail email: String, password: String, completion: AuthResultCallback? = nil)

2. 從Login View Controller拉一個Segue到Navigation Controller,並將名稱設定為「LoginToRestaurant」。

我們在LoginViewController的viewDidLoad內加上以下,利用addStateDidChangeListener 監聽使用者的登入狀態,如果已登入,則直接導到餐廳主畫面。

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
Auth.auth().addStateDidChangeListener { (auth, user) in
if user != nil {
self.performSegue(withIdentifier: "LoginToRestaurants", sender: nil)
}
}
}

2. 在我的餐廳主畫面加入一個「登出」的按鈕

加入程式碼如下。Firebase也提供了logout功能,先判斷currentUser是否已存在(已登入)再做登出。

@IBAction func logoutAction(_ sender: Any) {
if Auth.auth().currentUser != nil {
do {
try Auth.auth().signOut()
dismiss(animated: true, completion: nil)
} catch let error as NSError {
print(error.localizedDescription)
}
}
}

3. 將密碼欄位的「Secure Text Entry」打勾,則輸入密碼時會以*代替。

4. 執行

--

--