iOS 파이어베이스 회원정보 관리
Swift로 Firebase Auth 회원정보 구현 4탄
"파이어베이스 프로필 관리 이름, 이미지"
🛑 이글에서는 파이어베이스 Auth를 이용한 프로필 관리, 닉네임, 이미지만 다룬다 🛑
Xcode와 Firebase 연동 방법과 회원가입은 아래 글에서 참조
iOS와 Firebase 연동 1탄
2023.06.20 - [iOS Swift/Firebase 연동] - [ios/Swift] iOS 파이어베이스 연동 Firebase Auth (1)
iOS와 Firebase Auth 회원가입 2탄
2023.06.28 - [iOS Swift/Firebase 연동] - [ios/Swift] iOS 파이어베이스 회원가입 Firebase Auth (2)
iOS와 Firebase Auth 로그인 로그아웃 비밀번호 재설정 회원탈퇴 3탄
2023.07.04 - [iOS Swift/Firebase 연동] - [ios/Swift] 로그인 비밀번호 재설정 로그아웃 회원탈퇴 Firebase Auth (3)
Chap1. Firebase 라이브러리 import
파이어베이스 사용하려는 ViewController에 Firebase 라이브러리 import 한다
import FirebaseAuth
import FirebaseCore
Chap2. Firebase Auth 로그인 확인
프로필 관리를 위해서는 현재 로그인된 유저가 있는지 확인한다
if let user = Auth.auth().currentUser {
print("User Info : ",user)
} else {
print("Login : Error")
}
Chap3. createProfileChangeRequest 변수 생성 후 commit 요청
🔥 createProfileChangeRequest 사용방법
1️⃣ createProfileChangeRequest 변수 생성
2️⃣ 위 변수에 변경할 이름 또는 사진 url을 담는다
3️⃣ createProfileChangeRequest을 commit 요청한다
let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.commitChanges { [self] error in
guard let error = error else {
return
}
}
✔️ 코드 설명
Auth.auth().currentUser?.createProfileChangeRequest() 존재하는 경우
- changeRequest 를 변경요청한다
- 변경 요청에 문제가 있을 경우 error 반환
- changeRequest가 존재하지 않는 경우 코드가 실행되지 않는다
Chap4. Firebase Auth displayName 이름 변경
displayName에 변경할 이름을 입력한다
fileprivate func changeName() {
guard let name = nameTf.text else { return }
let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.displayName = name
changeRequest?.commitChanges { [self] error in
guard let error = error else {
nameLb.text = name
return
}
print("Error : "error)
}
}
✔️ 코드 설명
- changeRequest 변수의 displayName에 변경할 이름을 입력
- commitChanges 함수를 통해 이메일이 제대로 발송된 경우 error가 발생되지 않는다
Chap5. Firebase Auth displayName 사진 변경
photoURL에 변경할 사진의 url을 입력한다
fileprivate func changeImg() {
let imageURL = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRGpoKZBzAsDRMIYXSKRRjkhKAqzSxQ1wq9wQ&usqp=CAU"
let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.photoURL = URL(string: imageURL)
changeRequest?.commitChanges { [self] error in
guard let error = error else {
let url = URL(string: imageURL)
DispatchQueue.global().async { [weak self] in
if let data = try? Data(contentsOf: url!) {
if let image = UIImage(data: data) {
DispatchQueue.main.async {
self?.profileImg.image = image
}
}
}
}
return
}
print(error)
}
}
✔️ 코드 설명
- changeRequest 변수의 photo 에 변경할 사진 url을 입력
- commitChanges 함수를 통해 사진url이 제대로 발송된 경우, ImgaeView가 변경
- imageURL의 이미지를 다운로드한 후 ImageView의 image를 변경
🚫 주의 🚫
🛑 이미지 다운로드의 경우 시간이 걸리기때문에 ,
앱이 멈추는걸 방지하기 위해 반드시 다른 thread 에서 실시한다
🛑 UI변경은 main thread에서만 가능하여,
DispatchQueue.main.async 함수를 통해 메인스레드에서 동작하게 한다
Chap6. 변경된 photoURL과 displayName 확인하기
displayName에 변경할 이름을 입력한다
fileprivate func getProfileInfo() {
if let user = Auth.auth().currentUser {
if let photoURL = user.photoURL {
let url = photoURL
DispatchQueue.global().async { [weak self] in
if let data = try? Data(contentsOf: url) {
if let image = UIImage(data: data) {
DispatchQueue.main.async {
self?.profileImg.image = image
}
}
}
} }
if let userName = user.displayName {
nameLb.text = userName
}
}
else {
print("Login : Error")
}
}
✔️ 코드 설명
- 위에서 입력한 프로필 정보는 Auth.auth().currentUser 변수에서 받아온다
- 이미지를 firebase에 보낼 때와 똑같이 받아 올 때도 image url을 통해 다운로드하여 가져온다
👇 전체 소스코드 Github에서 확인하기 👇
https://github.com/hyeebin/ex-firebase-ios
'iOS Swift > Library, Framework 연동' 카테고리의 다른 글
[iOS/Swift] 로그인 비밀번호 재설정 로그아웃 회원탈퇴 Firebase Auth (3) (0) | 2023.07.04 |
---|---|
[iOS/Swift] ios 파이어베이스 회원가입 Firebase Auth (2) (0) | 2023.06.28 |
[iOS/Swift] ios 파이어베이스 연동 Firebase Auth (1) (4) | 2023.06.20 |
[iOS/Swift] 네이버 Clova OCR Api 예제 (2) | 2023.01.02 |