I am working on a log in for a web application, and I have made it so the user can sign in manually with their email and password or by using a google sign in. Is there a way to determine which method they used? Preferably by using the Firebase authentication state change function.
`firebase.auth().onAuthStateChanged(firebaseUser => {....`
I know you can tell how they signed in when you go into the Firebase console log but is there a way to determine it using JavaScript code?
When using firebase.auth().currentUser.providerData
the following:
@mjrdnk's answer is correct, but there is a caveat, a user could have multiple providers linked. So using firebase.auth().currentUser.providerData[0].providerId
will always yield the same provider even when another linked provider was used to sign in. The most accurate way to determine the current provider used to sign is by inspecting the ID token's field: firebase.sign_in_provider
.
You can determine by using currentUser https://firebase.google.com/docs/reference/js/firebase.UserInfo
Like this:
firebase.auth().currentUser.providerData[0].providerId
Hope this helps.
Currently @mjdnk asnwer depracated, because it will gives always first provider not the last logged in.
So most recent solution is:
As noted here
var uiConfig = {
callbacks: {
signInSuccessWithAuthResult: function(authResult, redirectUrl) {
var providerId = authResult.additionalUserInfo.providerId;
localStorage.setItem("firebaseProviderId", providerId)
//...
},
//..
}
and for display in page
firebase.auth().onAuthStateChanged(function (user) {
if (user) {
user.getIdToken().then(function (idToken) {
$('#user').text(welcomeName + "(" + localStorage.getItem("firebaseProviderId")+ ")");
$('#logged-in').show();
}
}
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With