Firebase Authentication

See the Firebase Authentication docs for web.

onAuthStateChanged

firebase.auth().onAuthStateChanged(currentUser => {
if (currentUser) {
// User is signed in.
} else {
// No user is signed in.
}
});

Register Email/Password

firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
});

Sign In Email/Password

firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
});

Create Provider

Google

var provider = new firebase.auth.GoogleAuthProvider();

Facebook

var provider = new firebase.auth.FacebookAuthProvider();

Twitter

var provider = new firebase.auth.TwitterAuthProvider();

GitHub

var provider = new firebase.auth.GithubAuthProvider();

OAuth sign in with a provider

Popup

firebase.auth().signInWithPopup(provider);

Redirect

firebase.auth().signInWithRedirect(provider);

Phone Auth

First attach a recaptcha using an element ID...

window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('sign-in-button', {
'size': 'invisible',
'callback': function(response) {
// reCAPTCHA solved, allow signInWithPhoneNumber.
onSignInSubmit();
}
});

... then capture a phone number from user input and send the sms...

var phoneNumber = getPhoneNumberFromUserInput();
var appVerifier = window.recaptchaVerifier;
firebase.auth().signInWithPhoneNumber(phoneNumber, appVerifier)
.then(function (confirmationResult) {
// SMS sent. Prompt user to type the code from the message, then sign the
// user in with confirmationResult.confirm(code).
window.confirmationResult = confirmationResult;
}).catch(function (error) {
// Error; SMS not sent
// ...
});

...and finally authenticate with the code from user input.

var code = getCodeFromUserInput();
confirmationResult.confirm(code).then(function (result) {
// User signed in successfully.
var user = result.user;
// ...
}).catch(function (error) {
// User couldn't sign in (bad verification code?)
// ...
});