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

Firebase简介

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

iOS--使用Firebase进行Email授权登陆_第1张图片
firebase.png

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

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

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


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

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


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

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

Steller
iOS--使用Firebase进行Email授权登陆_第3张图片
Steller1
iOS--使用Firebase进行Email授权登陆_第4张图片
Medium

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

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

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

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

  • 打开你账号的Firebase 控制台,点击创建应用
iOS--使用Firebase进行Email授权登陆_第5张图片
创建应用
  • 选择国家,输入应用名称(随便填写)之后,根据你自己的需求,选择平台,这里我们选择iOS,然后输入Xcode创建工程的Bundle ID
iOS--使用Firebase进行Email授权登陆_第6张图片
输入应用名称
  • 接下来这一步重要了,浏览器会自动下载一个文件:GoogleService-Info.plist,这个文件是用来确保我们Xcode中的应用可以和Firebase中创建的应用链接起来,将GoogleService-Info.plist文件拖入到Xcode工程中。
iOS--使用Firebase进行Email授权登陆_第7张图片
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登陆功能
iOS--使用Firebase进行Email授权登陆_第8张图片
开启邮箱登陆

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


Email授权登陆实现过程

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

iOS--使用Firebase进行Email授权登陆_第9张图片
丑哭
  • 注册
    核心代码如下,首先需要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重复,就会弹出错误信息。

iOS--使用Firebase进行Email授权登陆_第10张图片
注册

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

iOS--使用Firebase进行Email授权登陆_第11张图片
账号管理
  • 登陆
    核心代码如下,使用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)
                }
            })
iOS--使用Firebase进行Email授权登陆_第12张图片
登陆

什么,已经完成了?对滴,我们用了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。

你可能感兴趣的:(iOS--使用Firebase进行Email授权登陆)