美文网首页iOS Developer
iOS--使用Firebase进行Email授权登陆

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

作者: 死神一护 | 来源:发表于2017-02-07 19:18 被阅读433次

    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。

    相关文章

      网友评论

        本文标题: iOS--使用Firebase进行Email授权登陆

        本文链接:https://www.haomeiwen.com/subject/bblmittx.html