0

좋아요, 그래서 firebase를 통해 로그인해야하는 블로그를 만들고 있습니다. 의견을 게시하려면 이메일을 확인해야합니다.Firebase token.email_verified weird

이메일을 확인하는 방법을 알고 있으며 테스트 계정으로 확인했습니다. 내가 콘솔에 타이핑했을 때

firebase.auth().currentUser.emailVerified 

그것은 사실이었다. 그래서 나는 나의 이메일을 확인했다.

그러나 주석 .validate 규칙은 사용자가 필요은과 같이 검증합니다 : 그것은 작동하지 않는 그러나

auth.token.email_verified === true 

, 그래서 나는 그것을 제거하고 그것은 조금 후 다시

작동하기 시작했다 읽기의, 나는 깨달았다 나는

const credentials = firebase.auth.EmailAuthProvider.credential(
    user.email, password); 

user.reauthenticateWithCredential(credentials) 
    .then(() => { /* ... */ }); 

그리고 그것은 그것을 완벽하게 만든다. 설명은 firebase 서버를 apparantly 그것의 백엔드 유효성 검사를 업데이 트하는 데 약간의 시간이 걸렸지 만 재 인증은 즉시 업데이 트를 강제했다.

그러나, 나는 내가 다음과 같은 문제를 가지고

가 어떻게 사용자가 (firebase.auth().currentUser.emailValidated)을 검증 할 때 알고 않으며, 자신을 재 인증하도록 요청하는 방법에 대한 난처한 상황에 빠진 오전 같은 시간 중포 기지 백엔드에서 난 내 UI를 업데이트하고 난 auth.token.email_verified === true 클라이언트 측

또한 내가 편집에 아직 업데이트되지 않은 경우 알 수있는 방법을 기본적으로

을 재 인증 사용자에게 메시지를 표시 할 수 있도록 업데이트되지 않습니다 (auth.token.email_verified === true은 false입니다) 백엔드 검증을 업데이트하는 재 인증없이 클라이언트 측 솔루션이 있습니까?

편집 나는 user.reload().then(() => window.location.replace('/'))을 시도했지만이 가능성이 일어나고있는 것입니다

답변

0

일 didnt가 : firebase.auth().currentUser.reload()가 검증 한 후 호출 될 때

firebase.auth().currentUser.emailVerified가 업데이트됩니다. 그러나 auth.token.email_verified은 ID 토큰에서 값을 가져 오며, 만료되거나 새로 고칠 때까지 업데이트되지 않습니다. 따라서 firebase.auth().currentUser.getIdToken(true)에 호출하여 새로 고침하여 Firebase 데이터베이스 백엔드로 전송 된 토큰 클레임을 업데이트해야 할 수도 있습니다.