iOS--使用Firebase进行Email授权登陆

Firebase简介

首先,允许我给广大读者隆重介绍下我们今天的主角:Firebase

firebase.png

  • Firebase是Google提供的类似facebook—parse的那么一种服务,可使得我们app-maker避免编写冗长的服务器代码。

  • 哦,我们甚至不需要什么服务器,就可以轻松编写出一个有着数据同步,用户鉴权登陆,remote 通知,应用使用习惯统计等功能的一款App,并且Firebase是跨平台的,意味着,你的iOS,Android,Web应用都可以使用同一个数据库机构和用户管理系统。

  • 说了那么多,那么Firebase能做什么事情呢?这里从官网盗了一张图,它的功能简直是强大到让人发指。


    暴力的Firebase
  • 你不需要编写任何服务器代码,只要你的点子够有意思,也许,下一个million dollar app就属于你。 今天,让我们一起探索下,怎样使用Firebase进行Email授权登陆,下一期完成和FaceBook授权登陆

PS:我也会在接下来的一系列文章中继续深入Firebase的功能,最终做到,使用Firebase上架一款iOS APP。


Email授权登陆前期准备 (源码请见文章最后)

题外话:UI/UX对于App的重要性不言而喻,安利几个自己喜欢的App的登陆界面。

Steller
Steller1
Medium

怎么样,是不是立马就有冲动,到商店下载这几个App呢? 稍等片刻,我们可以先看完今天的文章再说嘛。

回到我们的正题,使用Email认证登陆App。

  • 使用Firebase的Email登陆功能,需要App的Bundle ID,在Xcode中创建App时候填写的值,该ID对应着该应用唯一的标识。
Bundle ID

打开Firebase的官网,注册一个账号,登陆后,按照如下步骤配置即可使用Email授权功能了

创建应用
  • 选择国家,输入应用名称(随便填写)之后,根据你自己的需求,选择平台,这里我们选择iOS,然后输入Xcode创建工程的Bundle ID
输入应用名称
  • 接下来这一步重要了,浏览器会自动下载一个文件:GoogleService-Info.plist,这个文件是用来确保我们Xcode中的应用可以和Firebase中创建的应用链接🔗起来,将GoogleService-Info.plist文件拖入到Xcode工程中。
GoogleService-Info.plist
  • 然后需要使用CocoaPods安装Firebase SDK,这一步就不说了,网上一搜教程,很多 Using CocoaPods in Your Swift and Objective-C Projects,贴一下Podfile文件: 需要说明是,Firebase 更新之后,Google将所有的业务分成一个个子模块,比如我们需要用户认证的功能,只需要在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
}
  • 随后,需要在创建的应用的Authentication选项卡中,开启Email/password登陆功能
开启邮箱登陆

这时,准备工作就做完了,万事俱备,开始集成Email 登陆功能吧。


Email授权登陆实现过程

为了将我们的注意力集中在Email的功能上,可以下载start project
start project ,打开后,已经创建好了Storyboard和登陆,注册,主页,重制密码几个ViewController,我知道很丑,大家不要在意,我保证后面后设计一个精美的登陆界面

丑哭
  • 注册
    核心代码如下,首先需要import FirebaseAuth模块,使用createUser方法,通过传入的email和password,来创建用户;email和password的内容都是用户从TextView中输入的。
 FIRAuth.auth()?.createUser(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)
    } 
            })

如果注册成功,就会跳转到应用主页,如果注册失败,比如Email重复,就会弹出错误信息。

注册

这时,打开浏览器看看Firebase的console中,发现用户管理项中已经多了一条记录,其实,它就是我们刚才注册的账号。

账号管理
  • 登陆
    核心代码如下,使用signIn方法,验证输入的Emial和password是否可以通过服务器验证,通过后跳转到主页,错误则弹框
 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)
                }
            })
登陆

什么,已经完成了?对滴,我们用了20分钟,就完成了一个带有服务器注册和登录验证功能的App。 给大家留两个作业,主页中的用户登出和重置密码的功能,我们可以使用Firebase提供的API很快就能完成这样的功能,大家可以查询官方文档试试看。

源代码已上传Github主页:
Demo for accomplishing email && password login process through Firebase


总结:

注册: FIRAuth.auth()?.createUser
登陆: FIRAuth.auth()?.signIn
重置密码: FIRAuth.auth()?.sendPasswordReset 会给该邮箱发送重置密码的邮件
登出: try? FIRAuth.auth()?.signOut()

PS : 大家有什么意见可以在留言板交流,我们的目标是,不用一行服务器代码,上架一款互联网App。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容