使用Android Studio 2.2.2 開發Firebase – E-mail 登入篇

作者 | 2016-11-21

 

本篇延續

在Android中使用2016新版Firebase加快開發過程(一)

使用Android Studio 2.2.2 開發Firebase – Database篇

將介紹如何使用Android Studio 2.2.2 Firebase工具,快速開發E-mail登入功能。

準備工作

導入firebase授權類別庫

如果先前己實作過「使用Android Studio 2.2.2 開發Firebase – Database篇」,點選Android Studio畫面右上角小圖示會看到畫面如下。

mag_as222_firebase_email_04

是否登入Google帳號不影響以下範例實作,但畫面和步驟會稍有不同。

在Android Studio 2.2.2 開啟 Firebase 工具,展開 [Authentication],點選 [Email and password authentication]

mag_as222_firebase_email_01

若已登入開發者帳號,此畫面中的 ①Connect your app to Firebase則同下圖,顯示為[Connected],請點擊 [Add Firebase Authentication to your app]。

mag_as222_firebase_email_02

未登入Google帳號,或Android專案尚未和Firebase專案建立連結,會要求開發者先連線到Firebase。

mag_as222_firebase_email_05

點擊 [Add Firebase Authentication to your app] 後雖然告訴我們將會加入 library com.google.firebase:firebase-auth:9.2.1 ,實際上最新導入版本為9.8.0,請按下[Accept Changes]

mag_as222_firebase_email_03

此時會在build.gradle (Module: app)多出一行

還需要到Firebase主控台做什麼?

切換到Firebase主控台選擇Authentication,可看見右側畫面中[電子郵件/密碼]未啟用。很可惜的,雖然上一個步驟在 Firebase工具點選[Email and password authentication] 項目,但是在Firebase主控台並未主動將 [電子郵件/密碼] 設為啟用。

將滑鼠移到紅色箭頭處,會出現筆的圖示,點擊該圖示。

mag_as222_firebase_email_06

設為啟用後,按下[儲存], [電子郵件/密碼]狀態即更改為已啟用。

mag_as222_firebase_email_07

mag_as222_firebase_email_08

啟用Firebase電子郵件/密碼驗證功能後,將透過Firebase 類別庫驗證現有帳號,也可透過註冊模組加入帳號。

測試email登入驗證功

手動新增一筆允許登入的使用者

mag_as222_firebase_email_11

輸入使用者電子郵件及密碼後,按下[新增使用者]

mag_as222_firebase_email_12

清單目前已有一筆資料

mag_as222_firebase_email_13

Android APP 透過 Firebase 驗證帳密

主程式中,和一般的登入程序一樣,執行APP後,先檢查是否已登入,若尚未登入則打開輸入帳號密碼畫面。在此我們先新增兩個類別變數 auth、authStateListener,Firebase相關授權功能都須透過FirebaseAuth類別,AuthStateListener顧名思義,即是授權狀態的傾聽器。

第1行:取得Firebase授權Instance(實例),Firebase 帳號相關操作皆透過此instance。

第2行:設定Listener,監聽帳號狀態。

第4行:onAuthStateChanged為必要覆寫方法,授權狀態改變皆會執行此方法,無論登入或登出。

第5行:取得目前的使用者,若使用者為空代表未登入。

第7行:若未登入開啟登入畫面 LoginActivity

準備LoginActivity 登入畫面

mag_as222_firebase_email_01

輸入email/password送驗證

第6行:signInWithEmailAndPassword方法,顧名思義,使用Email和密碼登入,傳入參數– Email和Password

第7行:設定匿名類別OnSuccessListener傾聽器,當驗證成功即執行onSuccess方法。

第14行:設定匿名類別OnFailureListener傾聽器,當驗證失敗即執行onFailure方法。

回到主程式,還記得我們前面是怎麼開啟登入畫面的嗎?

第4行:豋入失敗,結束程式。這麼做是為了防止使用者按back鍵返回。

萬事俱備只欠東風,還缺了什麼?

我們前面準備的AuthStateListener還沒派上用場呢!別忘了要覆寫方法onStart和onStop

Firebase對登入功能相當的友善,在撰寫一般登入功能時,倘若希望下一次能自動登入使用者帳密,則須靠程式開發人員自行撰寫code去記錄使用者登入的帳密,Firebase佛心來著,只要驗證過一次,下次再執行APP,就自動驗證登入了,是不是很棒呢?

如果要強制使用者下次執行APP還要再輸入帳密重新驗證怎麼辦呢?

只要覆寫onDestroy方法,執行signOut方法就登出了。

相關文章:

使用Facebook直接回應

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *