使用Firebase的Email註冊功能實作Android APP教學(四)

作者 | 2016-06-23

[新版] 在新版Android Studio 2.2整合了Firebase功能,並提供更方便的方法導入與設計,可參考:

使用Android Studio 2.2.2 開發Firebase – Database篇

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

使用Android Studio 2.2.2 開發Firebase – Database篇 part2


Firebase除了提供Email登入外,還有完整的Email註冊功能,讓開發人員可以無需架設伺服器,就能夠快速設計出以Email當做是會員帳號的會員系統。本篇是延續之前的三篇文章後,繼續擴充、加入常用的APP會員註冊功能。

建議進行本篇之前先實作以下文章:

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

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

Android中使用Firebase的E-mail登入功能 (三)

Firebase的Email註冊功能

接下來,我們將進一步擴充原LoginActivity,當使用者輸入Email與密碼後,假設該Email尚未是會員(不存在此用戶)時,顯示詢問使用者是否註冊。想得知上節呼叫註冊方法後的結果,應該在登入時加上OnCompleteListener傾聽器,請在上一篇文章中最後所實作的login方法的最後一行,更改為如下的程式碼:

第4-5行,原本在呼叫登入後即結束(有分號),現在繼續呼叫addOnCompleteListener方法,加入一個OnCompleteListener的匿名類別。

第7-9行,為登入工作完成後會被自動執行的Callback方法。

接下來,我們將在這個onComplete方法中實作辨別是否登入成功。

實作註冊詢問對話框

上一個步驟在驗證帳號工作完成後會自動執行OnCompleteListener介面內的callback方法「onComplete」,可使用Task類別的isSuccessful方法得到真假值(Boolean),假設失敗(false)時,可進行註冊的詢問程式設計,本段需要import的語法:

login方法的完成程式碼如下:

第2,4行,由於後續的程式會在匿名類別中使用到email與password兩個變數,因此需將變數加上final修飾字。

第11-14行,當驗證失敗時顯示除錯訊息,應顯示對話框詢問使用者是否想以此帳號註冊,本段程式較長,因此在LoginActivity另設計一register方法處理,並將email與password以參數方式傳遞至register方法中。

註冊新帳號

請在LoginActivity中設計一個新方法「register」,傳入參數為email與password兩變數,因為會在匿名類別中使用變數,請加上final修飾字,方法的程式碼如下:

第2-13行,建立一個對話框並顯示。

第9行,使用者按下對話框的確認按鈕時,呼叫自行設計在LoginActivity中的createUser方法,在此方法中設計建立帳號的程式碼。

接著請在LoginActivity中再實作一個「createUser」方法,內容如下:

第1行,設計一個新的createUser方法,傳入email與密碼字串。

第2行,呼叫FirebaseAuth類別所提供建立帳號的方法createUserWithEmailAndPassword,傳入email與password字串。

第3-14行,加入建立帳號後的匿名OnCompleteListener傾聽者物件。

第6-13行,當建立帳號工作完成後會自動呼叫onComplete方法。

第7-8行,準備註冊結果的訊息字串,使用三元判斷式。

第9-12行,顯示註冊結果訊息。

執行結果

執行應用程式後,請輸入另一個非會員的Email帳號與自訂密碼,如下圖:

A6124

接著按下LOGIN按鈕後,login方法內的程式試著登入,但Firebase回傳無此帳號,應用程式顯示對話框,請按下註冊按鈕建立帳號,如下圖:

A4648

上圖即是我們在「register」方法中產生的對話框,當按下對話框中的「註冊」按鈕時,會執行「createUser」方法中的程式碼,呼叫Firebase API所提供的「createUserWithEmailAndPassword」方法,使用Email與密碼建立帳號,完成後如下圖:

A6127

接著請回到Firebase主控台的Auth項目頁面,重新整理網頁之後,顯示剛才註冊的新帳號,如下圖:

A6128_n

實務上,在每次登入成功時,可將Firebase中帳號的「User UID」以Android的SharedPreferences儲存起來,以便後續新增個人化的聯絡人時,可以儲存在此特定資料內。

本階段完成的程式碼為

檔案庫(Repository): https://github.com/android66/FireChat.git

版本名稱: 註冊功能實作

註: 請在取得專案後, 一定要置換讀者自己環境所產生的 google-services.json檔, 才能正常運作。

相關文章:

Category: Android Firebase 標籤:, , , ,

關於 Hank Tom

專長為程式語言、雲端服務開發,Linux系統管理, 任職:利拓科技 技術長,海林行動科技 技術總監 輔仁大學 兼任助理教授 ,為 Android高效入門>深度學習、CentOS 7建置、管理與伺服器架設實戰、Java網路程式設計、雲端網頁程式設計-Google App Engine應用實作 等書作者

使用Facebook直接回應

6 thoughts on “使用Firebase的Email註冊功能實作Android APP教學(四)

  1. jiaping

    你好
    我按照您的教學操作
    註冊後顯示註冊成功
    但卻沒有真的加進firebase的使用者list裡

    回覆
    1. jiaping

      測試後發現
      是我的密碼未足6碼
      那為何這樣仍顯示註冊成功呢?

      回覆
      1. Hank Tom 文章作者

        那是因為原程式碼中是呼叫isComplete方法判斷,如下:
        String message =
        task.isComplete() ? “註冊成功" : “註冊失敗";
        它只回傳是否完成工作,應該使用isSuccessful()方法才對,感謝您的實作回饋與提醒。

        回覆
  2. Casio

    請問沒有輸入帳號密碼
    按下登入後會閃退
    請問這要在哪裡做修改呢?

    回覆

發表迴響

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