Android與FireBase(五)google登入功能實作

延續上一篇的FaceBook登入功能
身為Google底下的FireBase
當然也可以輕易實現Google帳號的登入!


本部份需要完成兩大部份
1.FireBase給予App的授權、2.主程式撰寫

Integrating Google Sign-In into Your Android App

1.新增SHA-1認證(SHA是一種憑證、類似實做FB登入時的hash key、詳細原理可見維基

1.1 以官方提供的憑證產生方式,在Android Studio內的終端機,輸入:

keytool -exportcert -list -v \
-alias androiddebugkey -keystore ~/.android/debug.keystore



(此為示範,請於網站內,複製自己系統的指令)

1.2 此時會要求輸入讀取金鑰的密碼,預設是"android"鍵盤輸入時不會跳出字
輸入完畢後,按下Enter,即會顯示結果



1.3 此處因密鑰長度關係(詳細原因仍須進一步查證),複製MD5,作為SHA-1的憑證

2. 來到FireBase的OverView,選擇連結的程式右上角,進入"設定"



2.1 來到最下方,"新增指紋",將1.1的MD5碼貼上,新增為SHA-1


以上完成第一部份的FireBase給予憑證
接著便可以來到Android Studio,撰寫App的登入功能

Authenticate Using Google Sign-In on Android

參考自官方說明整合說明,我們需要依序加入套件、新增UI、撰寫功能

1.1 到build.gradle內,加入以下參考:
compile 'com.google.firebase:firebase-auth:11.4.2'
compile 'com.google.android.gms:play-services-auth:11.4.2'

如果先前做過Email登入、FB登入功能,就無須額外加"firebase-auth"的套件了
唯一要注意"play-services-auth"版本,與原先套件版本有無衝突。

1.2 到layout.xml檔案內,新增google的signIn按鈕



2. 撰寫程式碼(大部分參考自官方說明

2.1 以GoogleSignInOptions與GoogleApiClient物件
來連結登入API與儲存登入帳號資訊的物件
(注意:RC_SIGN_IN 的數值須自行宣告,否則執行API時會報錯找不到)



2.2 我們新增一個專門設定2.1物件的函式googleConfig(),在onCreate()狀態呼叫設定


在登入按鈕設定listener,呼應signIn()方法
同時signIn()將導向google提供的登入頁,回傳結果

2.3 覆寫onActivityResult()來接收2.2回傳結果,交給handleSignInResult()來處理




2.4 延續2.3,handleSignInResult()判斷是否登入成功,成功的話,即傳送帳戶物件
給firebaseAuthWithGoogle(),完成向firebase註冊新的使用者,同時執行updateUI()
(updateUI()參考,可見上一篇Android與FireBase(四)


3. 在onCreate()內呼叫googleConfig(),點擊登入時,便會依序合作完成功能:
googleConfig()->signIn()->onActivityResult()->handleSignInResult()->firebaseAuthWithGoogle()

編譯安裝成功後,便可以看到google的登入按鈕,點擊後可以選擇登入帳號
登入完會顯示帳號名稱、Email

 


同時firebase網站內的Authentication,也會新增此使用者囉!



到本篇為止,我們已經學會使用大部分的社群帳戶Provider,
FaceBook跟Google直接作為登入帳號,已經綽綽有餘了。
至於Twitter我就不多介紹了,可以自行探討,
而GitHub則是比較偏向開發者的社群,一般應用上使用客群較少。



接著將會再探討FireBase的其他功能實作!
而各大網站也有豐富相關教學,都值得大家互相學習研究!