Firebase简介
首先,允许我给广大读者隆重介绍下我们今天的主角:Firebase
Firebase是Google提供的类似facebook—parse的那么一种服务,可使得我们app-maker避免编写冗长的服务器代码。
哦,我们甚至不需要什么服务器,就可以轻松编写出一个有着数据同步,用户鉴权登陆,remote 通知,应用使用习惯统计等功能的一款App,并且Firebase是跨平台的,意味着,你的iOS,Android,Web应用都可以使用同一个数据库机构和用户管理系统。
-
说了那么多,那么Firebase能做什么事情呢?这里从官网盗了一张图,它的功能简直是强大到让人发指。
你不需要编写任何服务器代码,只要你的点子够有意思,也许,下一个million dollar app就属于你。 今天,让我们一起探索下,怎样使用Firebase进行Email授权登陆,下一期完成和FaceBook授权登陆
PS:我也会在接下来的一系列文章中继续深入Firebase的功能,最终做到,使用Firebase上架一款iOS APP。
Email授权登陆前期准备 (源码请见文章最后)
题外话:UI/UX对于App的重要性不言而喻,安利几个自己喜欢的App的登陆界面。
怎么样,是不是立马就有冲动,到商店下载这几个App呢? 稍等片刻,我们可以先看完今天的文章再说嘛。
回到我们的正题,使用Email认证登陆App。
- 使用Firebase的Email登陆功能,需要App的Bundle ID,在Xcode中创建App时候填写的值,该ID对应着该应用唯一的标识。
打开Firebase的官网,注册一个账号,登陆后,按照如下步骤配置即可使用Email授权功能了
- 打开你账号的Firebase 控制台,点击创建应用
- 选择国家,输入应用名称(随便填写)之后,根据你自己的需求,选择平台,这里我们选择iOS,然后输入Xcode创建工程的Bundle ID
- 接下来这一步重要了,浏览器会自动下载一个文件:GoogleService-Info.plist,这个文件是用来确保我们Xcode中的应用可以和Firebase中创建的应用链接🔗起来,将GoogleService-Info.plist文件拖入到Xcode工程中。
- 然后需要使用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。