firebase
Firebase 데이터베이스를 사용하여 Firebase 인증 사용자 목록을 유지하는 방법
수색…
사용자 프로필 데이터를 저장하는 방법
모든 인증 된 사용자는 모든 공급자에서 고유 한 Firebase 사용자 uid
를 가지며 모든 인증 방법의 결과로 반환됩니다.
사용자의 데이터를 저장하는 좋은 방법은 모든 사용자의 데이터를 유지하고 보안 규칙을 사용하여 노드를 보호하는 노드를 만드는 것입니다
- 데이터베이스
{
"users": {
"uid1" : {
"name": "Steve",
"surname": "Jobs"
},
"uid2" : {
"name": "Bill",
"surname": "Gates"
}
}
}
- 보안
{
"rules": {
"users": {
"$uid": {
// If node's key matches the id of the auth user
".write": "$uid == auth.uid"
}
}
}
}
위의 규칙에서 $uid
는 소위 "달러 변수"이며,이 규칙은 그 아래의 규칙이 users
모든 하위 노드에 적용되도록합니다. 자세한 내용은 $ 변수를 사용하여 경로 세그먼트를 캡처하는 방법 에 대한 설명서를 참조하십시오.
왜 사용자 데이터를 데이터베이스에 저장합니까?
Firebase 인증을 사용하면 앱 사용자가 소셜 공급자 또는 이메일 + 비밀번호로 로그인 할 수 있습니다. 하지만 Firebase 인증으로 지정할 수있는 것 이상으로 사용자에 관한 추가 정보를 저장하려면 어떻게해야합니까?
또는 앱의 사용자 목록을 표시하려면 어떻게해야합니까? Firebase 인증에는 API가 없습니다.
대부분의 개발자는 별도의 데이터베이스에 추가 정보를 저장하여이 문제를 해결합니다. 이 주제에서는 Firebase Realtime Database 에 그러한 정보를 저장하는 방법을 설명합니다.
실시간 데이터베이스의 사용자 계정 데이터 처리
Firebase 인증 시스템은 사용자 uid
, displayName
, photoURL
및 email
의 소스입니다. 암호 기반 계정은 .updateProfile
메소드를 통해 인증 시스템에서이 영구 값을 설정합니다. 이러한 값을 실시간 데이터베이스, rDB, users
노드에 저장하면 부실 데이터 문제가 발생합니다. 예를 들어 표시 이름이 변경 될 수 있습니다. 이러한 값을 동기화 상태로 유지하려면 .onAuthStateChange
와 함께 로컬 저장소 를 사용 .onAuthStateChange
.
모든 .onAuthStateChange
-
getItem('displayName')
및getItem('photoURL')
-
user.displayName
및user.photoURL
과 비교user.photoURL
- 다른 경우
-
setItem('displayName')
및setItem('photoURL')
-
db.ref.child('users').update
displayName
및 / 또는photoURL
값을db.ref.child('users').update
하십시오db.ref.child('users').update
-
.onAuthStateChange
는 모든 페이지로드 또는 .onAuthStateChange
고침 및 모든 인증 상태 변경시 실행됩니다. 잠재적으로 자주 발생합니다 (예 : 다중 페이지 응용 프로그램). 그러나 로컬 스토리지에 읽고 쓰는 것은 동기적이고 매우 빠르므로 앱 성능에 눈에 띄는 영향은 없습니다.