前一篇,我們己經引入了 SDK,接下來,要做的事情是帳號密碼認證。若還沒看過,請先參考前篇完成引入SDK 的部份
http://shenfive.pixnet.net/blog/post/220664811-%E4%BD%BF%E7%94%A8-firebase--with-swift%2c--%EF%BC%881-%29%EF%BC%8C%E7%B0%A1%E4%BB%8B%E8%88%87%E5%AE%89%E8%A3%9Dsdk

我們要在這兒做幾個事情:

1.  新建立帳號,使用電子郵件與密碼,並進行電子郵件確認使用者

2. 使用電子郵件與密碼登入,並確認是否有經過電子郵件認證

3. 忘記密碼電子郵件重設


所以我建立了 3 個 View Controller, 分別設定為 loginViewController  

第一件事情是到 Firebase Consol 把該功能開啟

螢幕快照 2016-10-31 上午11.41.16.png

請在 Authentication>登入方式,確認電子郵件/密碼項目己啟用,若沒有的話,請按下編輯,修正為開啟
再者,要登入需要一個帳號,請在 Authentication>使用者 中,新增一個測試用的使用者,

螢幕快照 2016-10-31 上午11.29.52.png

 

新增時,只需設定電子郵與密碼即可。


接下來就是 APP 端了

Firebase 都是使用 FIRatuth 這個 物件來操作,這個物件可以使用 FIRAuth.auth()? 即可取得物件後操作了。

首先建立一個 ViewController 叫 LoginViewController,其中至少要有輸入帳號密碼的部份,當然,最好事檢查帳號密碼格式,
預設的狀況下,帳號必需是 Email 格式,密碼至少六碼,實際要執行的動作也很簡單,只要 import  Firbase 之後對 auth 物件作 singIn 方法就可以了,語法如下:

 

// 程式碼:引入 Firebase

 

import Firebase

 

// 程式碼試登入,假設帳號為 theAccount , 密碼為 thePassword 兩個變數

 

 

        FIRAuth.auth()?.signIn(withEmail: theAccount, password: thePassword){(user,error) in

             if( user != nil ){

                print("登人驗證成功")

             }else{

                print("無法登入,錯誤訊息為:\n\((error?.localizedDescription)!)")

             }

        }

                   
基本上,這樣就可以登入成功了,但通常登入後的動作,我們通常不會寫在這個 Clsure 中,為什麼呢?因為 APP 中的登入是很麻煩的動作,而且手機相對是私有工具所以在大多數的狀況下,關閉APP後再開啟時,APP 會自動登入的,所以實際上有另一個方法來執行實際登入後的行為,這個動作是寫在【登入狀態變更】時,也就是我們會在 FIRauth 中,加上一個等待的方法來實做,也就是我們會在 ViewdidLoad 方法中,加上  addStateDidChangeListener 方法,程式碼如下:
 

        FIRAuth.auth()?.addStateDidChangeListener { auth, user in

            if let user=user{

                // 使用有物件,也就是狀況態由未登入轉為登入狀態,登入後的動作寫在這裡

 

                print("狀態轉為登人狀態")

 

                }

            } else {

                // User is singed out。登出後的動作寫在這裡

                print("狀態轉為登出狀態")

 

            }

            

        }

 

至於登出就簡單多了,因為不用管成功失敗,所以只要執行以下程式碼就行了

 

        try! FIRAuth.auth()!.signOut()

        print("logout")

 

原則上這樣就可以登入了,在關閉 APP 再開啟後,也會自動登入,但到目前為止,只能手動建帳號,下一次我們來建立新增帳號頁面,與電子郵件確認.....  下次待續

 

arrow
arrow

    shenfive 發表在 痞客邦 留言(2) 人氣()