Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
125 lines (94 sloc) 2.47 KB

Notes

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?)
  // ...
});