Firebase iOS (2) 實作帳號登入篇


Posted by quinhsieh on 2022-03-07

開發環境

此篇使用Xcode版本13.0(13A233)SwiftUI

介紹開始

延續上篇 Firebase iOS (1) 設定篇
首先先到Firebase網站點選已經產生的Demo1方案 -> 點選Authentication

Authentication -> 點選Sign-in method -> 點選電子郵件/密碼

選取取用 電子郵件/密碼 -> 按下儲存

接著到Authentication -> 點選Users -> 點選新增使用者
在電子郵件地址輸入測試用地址:test@qqemail.com(因為是測試用不需要真實存在的)
密碼輸入:Test4567 (這也是測試用)
設定好後按下新增使用者

設定好Firebase後切換到Xcode上
首先要測試此功能需要有最簡單的介面
我們需畫好介面如下圖:

ContentView.swift加入介面

VStack {
    TextField("Email", text: $email)
    SecureField("Password", text: $password)
    Button(action: {login()}) {
        Text("Login")
    }
}

介面畫好後要加入Firebase來做驗證了

import Firebase
func login() {
    Auth.auth().signIn(withEmail: email, password: password) { (result, error) in
        if error != nil {
            print(error?.localizedDescription ?? "")
        } else {
            print("success")
        }
    }
}

使用模擬器選擇iphone11來測試
如果成功或失敗(故意輸入錯誤密碼)會在Xcode的debug output看到successThe password is invalid or the user does not have a password.

完整程式碼如下:
ContentView.swift

import SwiftUI
import Firebase

struct ContentView: View {
    @State private var email = ""
    @State private var password = ""
    var body: some View {
        VStack {
            TextField("Email", text: $email)
            SecureField("Password", text: $password)
            Button(action: {login()}) {
                Text("Login")
            }
        }
    }
    func login() {
        Auth.auth().signIn(withEmail: email, password: password) { (result, error) in
            if error != nil {
                print(error?.localizedDescription ?? "")
            } else {
                print("success")
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

到這邊登入功能已經完成了!
但是總覺得還是跟一般登入還有一些些差異?待續...


#Firebase #iOS #SwiftUI







Related Posts

後端好朋友 Express middleware

後端好朋友 Express middleware

CoderBridge x TechBridge 技術文章推廣計畫

CoderBridge x TechBridge 技術文章推廣計畫

滲透測試基本技術 第三章 (003)

滲透測試基本技術 第三章 (003)


Comments