iOS--使用Firebase進(jìn)行Email授權(quán)登陸

Firebase簡(jiǎn)介

首先,允許我給廣大讀者隆重介紹下我們今天的主角:Firebase

firebase.png

  • Firebase是Google提供的類(lèi)似facebook—parse的那么一種服務(wù),可使得我們app-maker避免編寫(xiě)冗長(zhǎng)的服務(wù)器代碼。

  • 哦,我們甚至不需要什么服務(wù)器,就可以輕松編寫(xiě)出一個(gè)有著數(shù)據(jù)同步,用戶(hù)鑒權(quán)登陸,remote 通知,應(yīng)用使用習(xí)慣統(tǒng)計(jì)等功能的一款A(yù)pp,并且Firebase是跨平臺(tái)的,意味著,你的iOS,Android,Web應(yīng)用都可以使用同一個(gè)數(shù)據(jù)庫(kù)機(jī)構(gòu)和用戶(hù)管理系統(tǒng)。

  • 說(shuō)了那么多,那么Firebase能做什么事情呢?這里從官網(wǎng)盜了一張圖,它的功能簡(jiǎn)直是強(qiáng)大到讓人發(fā)指。


    暴力的Firebase
  • 你不需要編寫(xiě)任何服務(wù)器代碼,只要你的點(diǎn)子夠有意思,也許,下一個(gè)million dollar app就屬于你。 今天,讓我們一起探索下,怎樣使用Firebase進(jìn)行Email授權(quán)登陸,下一期完成和FaceBook授權(quán)登陸

PS:我也會(huì)在接下來(lái)的一系列文章中繼續(xù)深入Firebase的功能,最終做到,使用Firebase上架一款iOS APP。


Email授權(quán)登陸前期準(zhǔn)備 (源碼請(qǐng)見(jiàn)文章最后)

題外話(huà):UI/UX對(duì)于App的重要性不言而喻,安利幾個(gè)自己喜歡的App的登陸界面。

Steller
Steller1
Medium

怎么樣,是不是立馬就有沖動(dòng),到商店下載這幾個(gè)App呢? 稍等片刻,我們可以先看完今天的文章再說(shuō)嘛。

回到我們的正題,使用Email認(rèn)證登陸App。

  • 使用Firebase的Email登陸功能,需要App的Bundle ID,在Xcode中創(chuàng)建App時(shí)候填寫(xiě)的值,該ID對(duì)應(yīng)著該應(yīng)用唯一的標(biāo)識(shí)。
Bundle ID

打開(kāi)Firebase的官網(wǎng),注冊(cè)一個(gè)賬號(hào),登陸后,按照如下步驟配置即可使用Email授權(quán)功能了

創(chuàng)建應(yīng)用
  • 選擇國(guó)家,輸入應(yīng)用名稱(chēng)(隨便填寫(xiě))之后,根據(jù)你自己的需求,選擇平臺(tái),這里我們選擇iOS,然后輸入Xcode創(chuàng)建工程的Bundle ID
輸入應(yīng)用名稱(chēng)
  • 接下來(lái)這一步重要了,瀏覽器會(huì)自動(dòng)下載一個(gè)文件:GoogleService-Info.plist,這個(gè)文件是用來(lái)確保我們Xcode中的應(yīng)用可以和Firebase中創(chuàng)建的應(yīng)用鏈接??起來(lái),將GoogleService-Info.plist文件拖入到Xcode工程中。
GoogleService-Info.plist
  • 然后需要使用CocoaPods安裝Firebase SDK,這一步就不說(shuō)了,網(wǎng)上一搜教程,很多 Using CocoaPods in Your Swift and Objective-C Projects,貼一下Podfile文件: 需要說(shuō)明是,F(xiàn)irebase 更新之后,Google將所有的業(yè)務(wù)分成一個(gè)個(gè)子模塊,比如我們需要用戶(hù)認(rèn)證的功能,只需要在pod中加入Core和Auth模塊即可
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
 
target 'FirebaseTutorial' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!
 
  # Pods for FirebaseTutorial1
  pod 'Firebase/Core'
  pod 'Firebase/Auth'
end

最后,需要在AppDelegate中,
import Firebase

更新application(_:didFinishLaunchingWithOptions:)方法:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    FIRApp.configure()
    
    return true
}
  • 隨后,需要在創(chuàng)建的應(yīng)用的Authentication選項(xiàng)卡中,開(kāi)啟Email/password登陸功能
開(kāi)啟郵箱登陸

這時(shí),準(zhǔn)備工作就做完了,萬(wàn)事俱備,開(kāi)始集成Email 登陸功能吧。


Email授權(quán)登陸實(shí)現(xiàn)過(guò)程

為了將我們的注意力集中在Email的功能上,可以下載start project
start project ,打開(kāi)后,已經(jīng)創(chuàng)建好了Storyboard和登陸,注冊(cè),主頁(yè),重制密碼幾個(gè)ViewController,我知道很丑,大家不要在意,我保證后面后設(shè)計(jì)一個(gè)精美的登陸界面

丑哭
  • 注冊(cè)
    核心代碼如下,首先需要import FirebaseAuth模塊,使用createUser方法,通過(guò)傳入的email和password,來(lái)創(chuàng)建用戶(hù);email和password的內(nèi)容都是用戶(hù)從TextView中輸入的。
 FIRAuth.auth()?.createUser(withEmail: emailTextField.text!, password: passwordTextField.text!, completion: { (user, error) in
   if error == nil {
//跳轉(zhuǎn)到主頁(yè)
let vc = self.storyboard?.instantiateViewController(withIdentifier: "Home")
 self.present(vc!, animated: true, completion: nil)
    } 
            })

如果注冊(cè)成功,就會(huì)跳轉(zhuǎn)到應(yīng)用主頁(yè),如果注冊(cè)失敗,比如Email重復(fù),就會(huì)彈出錯(cuò)誤信息。

注冊(cè)

這時(shí),打開(kāi)瀏覽器看看Firebase的console中,發(fā)現(xiàn)用戶(hù)管理項(xiàng)中已經(jīng)多了一條記錄,其實(shí),它就是我們剛才注冊(cè)的賬號(hào)。

賬號(hào)管理
  • 登陸
    核心代碼如下,使用signIn方法,驗(yàn)證輸入的Emial和password是否可以通過(guò)服務(wù)器驗(yàn)證,通過(guò)后跳轉(zhuǎn)到主頁(yè),錯(cuò)誤則彈框
 FIRAuth.auth()?.signIn(withEmail: emailTextField.text!, password: passwordTextField.text!, completion: { (user, error) in
                if error == nil {
                    let vc = self.storyboard?.instantiateViewController(withIdentifier: "Home")
                    self.present(vc!, animated: true, completion: nil)
                }
            })
登陸

什么,已經(jīng)完成了?對(duì)滴,我們用了20分鐘,就完成了一個(gè)帶有服務(wù)器注冊(cè)和登錄驗(yàn)證功能的App。 給大家留兩個(gè)作業(yè),主頁(yè)中的用戶(hù)登出和重置密碼的功能,我們可以使用Firebase提供的API很快就能完成這樣的功能,大家可以查詢(xún)官方文檔試試看。

源代碼已上傳Github主頁(yè):
Demo for accomplishing email && password login process through Firebase


總結(jié):

注冊(cè): FIRAuth.auth()?.createUser
登陸: FIRAuth.auth()?.signIn
重置密碼: FIRAuth.auth()?.sendPasswordReset 會(huì)給該郵箱發(fā)送重置密碼的郵件
登出: try? FIRAuth.auth()?.signOut()

PS : 大家有什么意見(jiàn)可以在留言板交流,我們的目標(biāo)是,不用一行服務(wù)器代碼,上架一款互聯(lián)網(wǎng)App。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容