2016-06-19 4 views
4

나는 사용자 인증 모듈로 사용하고있는 Firebase 프로젝트를 설정했습니다. Github의 firebaseui-web 프로젝트도 사용하고 있습니다. 사인온에Firebase - Auth - 가입했지만 확인되지 않은 이메일을 발견했습니다.

내 리디렉션이 코드에 따라 잘 작동 :

// FirebaseUI config. 
var uiConfig = { 
    'signInSuccessUrl': 'MY_REDIRECT.html', 
    'signInOptions': [ 
    firebase.auth.EmailAuthProvider.PROVIDER_ID 
    ], 
    // Terms of service url. 
    'tosUrl': '<your-tos-url>', 
}; 

페이지가로드 될 때 (즉, MY_REDIRECT.html) 나는 그들이 확인한 있는지 확인하기 위해 사용자의 상태를 확인하고있어 자신의 전자 메일, 다음 호출 할 경우 sendEmailVerificationmethod :

checkLoggedInUser = function() { 
    auth.onAuthStateChanged(function(user) { 
    if (user) { 
     // is email verified 
     if(user.emailVerified) { 
     // show logged in user in UI 
     $('#loggedinUserLink').html('Logged in:' + user.email + '<span class="caret"></span>');   
     } else { 
     // user e-mail is not verified - send verification mail and redirect 
     alert('Please check your inbox for a verification e-mail and follow the instructions'); 
     // handle firebase promise and don't redirect until complete i.e. .then 
     user.sendEmailVerification().then(function() { 
      window.location.replace('index.html'); 
     }); 
     } 
    } else { 
     // no user object - go back to index 
     window.location.replace("index.html"); 
    } 
    }, function(error) { 
    console.log(error); 
    }); 
}; 

window.onload = function() { 
    checkLoggedInUser() 
}; 

모든 지금까지 좋은 - 중포 기지 내가 원하는 일을한다! 고마워요 :)

그러나 Firebase Console UI에서는 사용자가 실제로받은 편지함으로 가서 확인을 수행하기 위해 링크를 클릭했는지 알 수있는 방법이 없습니다. UI는 다음과 같습니다 : I 기본 테스트 및 UID 전 및 검증이 발생한 후 변경되지 않는 사용자를 실행했습니다

enter image description here

.

그래서 여기 내 질문이 있습니다. 전자 메일 확인을 올바르게 했습니까? 그렇다면 UI에 검증되지 않은 것과 검증되지 않은 것을 나타내는 UI가 표시되지 않습니다. 인증 모듈에서이 두 사용자 집합에 액세스하는 허용 된 방법이 있습니까? UID 및 해당 속성의 기본 테이블 (emailVerified 속성 포함)에 액세스하는 방법을 볼 수 없습니다. 기능이 콘솔에 없으면 더 많은 코드를 작성해야 할 필요가 없습니다. 다음 단계에서 올바른 방향으로 움직이기를 원합니다.

답변

7

현재 Firebase 콘솔에는 특정 사용자의 전자 메일 주소가 확인되었는지 확인할 방법이 없습니다. 이고 API to get a list of users이지만 확인되었는지 여부는 필터링 할 수 없습니다.

당신은 현재 인증 된 사용자의 이메일 주소가 확인 여부를 확인할 수 있습니다

firebase.auth().currentUser.emailVerified 

당신은 가입하는 사람 막을 수 없습니다. 그러나 확인 된 이메일 주소를 가진 사용자 만 (특정) 데이터에 액세스 할 수 있음을 쉽게 확인할 수 있습니다. 예를 들어 :

{ 
    "rules": { 
    ".read": "auth != null && auth.token.email_verified", 
    "gmailUsers": { 
     "$uid": { 
     ".write": "auth.token.email_verified == true && 
        auth.token.email.matches(/.*@gmail.com$/)" 
     } 
    } 
    } 
} 

위의 규칙

은 확인 된 이메일 주소를 가진 사용자 만이 gmailUsers에서 쓸 수있는 검증 Gmail 주소와 데이터 및 사용자 만 읽을 수 있는지 확인합니다.

+0

설명해 주셔서 감사합니다. 나는이 논리를 사용하여 'mickey @ mouse.com'과 같은 전자 메일을 등록하는 것을 방지하기 위해 사이트를 사용하려는 사용자의 진정한 연락처 정보를 수집 할 수 있습니다. 제 부분에 다른 접근 방식을 권하고 싶습니까? 가짜 전자 메일 주소를 알 수있는 능력이 합당한 요구 사항이라고 생각합니다. 소셜 미디어 로그인을 사용하면이 문제를 해결할 수 있습니다. 다시 한번 감사드립니다. –

+0

그래서 내 프로젝트의 전체 사용자 목록에 액세스 할 수있는 방법이 없습니까? 그건 좀 이상하게 보입니다 - 새로운 사람들이 가입함에 따라 2 차 데이터베이스를 구축 할 수있는 해결 방법이 있습니까? 내가 뭔가를 오해해야한다고 느낀다. 적절한 경우 새로운 질문을 시작하라고 나에게 언제든지 물어보십시오. –

+0

누군가가이 문제를 발견하면 다음 페이지로 이동하십시오. http://stackoverflow.com/questions/35613533/query-registered-users-details-in-firebase?rq=1 –