1

웹 응용 프로그램의 로그인을 위해 작업 중이며 사용자가 전자 메일과 암호 또는 Google 로그인을 사용하여 수동으로 로그인 할 수 있도록 만들었습니다. 사용 된 방법을 결정하는 방법이 있습니까? 가급적 Firebase 인증 상태 변경 기능을 사용하십시오.사용자가 이메일과 비밀번호 또는 Google 로그인으로 Firebase에 로그인했는지 확인하는 방법은 무엇입니까?

`firebase.auth().onAuthStateChanged(firebaseUser => {....` 

Firebase 콘솔 로그에 로그인했을 때 로그인 방법을 알 수 있지만 JavaScript 코드를 사용하여 로그인 방법을 확인할 수 있습니까?

다음 firebase.auth().currentUser.providerData를 사용하여 : enter image description here

+0

UserInfo를 확인 했습니까? https://firebase.google.com/docs/reference/js/firebase.UserInfo "providerId 문자열 현재 사용자의 인증 공급자 ID입니다 (예 : 'facebook.com'또는 'google.com'). . " – mjrdnk

+0

firebase.auth(). currentUser.providerId와 같은 뜻입니까? 테스트를 위해 콘솔 로그에 출력했을 때 firebase를 출력하기 때문입니다. – Evan

+0

흠 .. firebase.auth() 란 무엇입니까? currentUser returns? 나는 물건을 추측한다. – mjrdnk

답변

2

@ mjrdnk의 답변은 정확하지만주의해야 할 점은 사용자가 여러 제공 업체를 연결할 수 있다는 것입니다. 따라서 firebase.auth().currentUser.providerData[0].providerId을 사용하면 다른 연결된 공급자를 사용하여 로그인 한 경우에도 항상 동일한 공급자가 생성됩니다. 서명에 사용 된 현재 공급자를 확인하는 가장 정확한 방법은 ID 토큰의 필드 인 firebase.sign_in_provider을 검사하는 것입니다.

+0

"ID 토큰의 필드 인'firebase.sign_in_provider'를 검사하여 현재 서명 한 공급자를 확인하는 가장 정확한 방법은 무엇입니까? – linasmnew

+1

사용자에게 로그인하면 Firebase ID 토큰이 반환됩니다. 'currentUser.getIdToken()'을 통해 그 ID 토큰을 얻을 수 있습니다. 토큰에는 발급자, 대상, 사용자 전자 메일, 전화 번호, 인증 시간, 새로 고침 시간, 만료 등과 같은 정보와 중요한 로그인 방법이 포함되어 있습니다. 토큰의 페이로드를 base64로 해독하면 정보. 이를 이해하려면 수동으로 사용자의 ID 토큰을 복사하여 https://jwt.io에 붙여 페이로드를 검사하십시오. 이 메소드는 사용자가 여러 공급자를 연결할 수 있으므로 로그인 공급자를 얻는 가장 좋은 방법입니다. – bojeil