title: Auth0-js Custom Login - 401 Unauthorized
body: <p>I've been working off of this React Quickstart on auth0 <a href="https://auth0.com/docs/quickstart/spa/react/02-custom-login" rel="nofollow noreferrer">https://auth0.com/docs/quickstart/spa/react/02-custom-login</a> , trying to implement a custom login. When I try to Login I get a 401 Unauthorized Error and when I try to Sign Up I get the same alert error but the user does get created and I get redirected to the home page. Mind you everything works fine using the Lock Widget but when I try to do it with the custom login it doesn't. </p>
  
  <p>Here's the AuthService code which is the most relevant I feel. The Login component simply calls the login and signup methods. </p>
  
  <pre><code>export default class SocialAuthService extends EventEmitter {
    constructor(clientId, domain) {
      super()
      // Configure Auth0
      this.auth0 = new auth0.WebAuth({
        clientID: 'clientID',
        domain: 'domain',
        responseType: 'token id_token',
        redirectUri: 'http://localhost:3000/login'
      })
  
      this.login = this.login.bind(this)
      this.signup = this.signup.bind(this)
      this.loginWithGoogle = this.loginWithGoogle.bind(this)
      this.loginWithTwitter = this.loginWithTwitter.bind(this)
      this.loginWithFacebook = this.loginWithFacebook.bind(this)
    }
  
    login(username, password) {
      this.auth0.client.login({
        realm: 'Username-Password-Authentication',
        username,
        password
      }, (err, authResult) =&gt; {
        if (err) {
          alert('Error: ' + err.description)
          return
        }
        if (authResult &amp;&amp; authResult.idToken &amp;&amp; authResult.accessToken) {
          this.setToken(authResult.accessToken, authResult.idToken)
          browserHistory.replace('/home')
        }
      })
    }
  
    signup(email, password){
      this.auth0.redirect.signupAndLogin({
        connection: 'Username-Password-Authentication',
        email,
        password,
      }, function(err) {
        if (err) {
          alert('Error: ' + err.description)
        }
      })
    }
  
    parseHash(hash) {
      this.auth0.parseHash({ hash }, (err, authResult) =&gt; {
        if (authResult &amp;&amp; authResult.accessToken &amp;&amp; authResult.idToken) {
          this.setToken(authResult.accessToken, authResult.idToken)
          browserHistory.replace('/home')
          this.auth0.client.userInfo(authResult.accessToken, (error, profile) =&gt; {
            if (error) {
              console.log('Error loading the Profile', error)
            } else {
              this.setProfile(profile)
            }
          })
        } else if (authResult &amp;&amp; authResult.error) {
          alert('Error: ' + authResult.error)
        }
      })
    }
  
    loggedIn() {
      // Checks if there is a saved token and it's still valid
      const token = this.getToken()
      return !!token &amp;&amp; !isTokenExpired(token)
    }
  
    setToken(accessToken, idToken) {
      // Saves user access token and ID token into local storage
      localStorage.setItem('access_token', accessToken)
      localStorage.setItem('id_token', idToken)
    }
  
    setProfile(profile) {
      // Saves profile data to localStorage
      localStorage.setItem('profile', JSON.stringify(profile))
      // Triggers profile_updated event to update the UI
      this.emit('profile_updated', profile)
    }
  
    getProfile() {
      // Retrieves the profile data from localStorage
      const profile = localStorage.getItem('profile')
      return profile ? JSON.parse(localStorage.profile) : {}
    }
  
    getToken() {
      // Retrieves the user token from localStorage
      return localStorage.getItem('id_token')
    }
  
    logout() {
      // Clear user token and profile data from localStorage
      localStorage.removeItem('id_token')
      localStorage.removeItem('profile')
    }
  
    loginWithGoogle() {
      this.auth0.authorize({
        connection: 'google-oauth2'
      })
    }
  
    loginWithTwitter() {
      this.auth0.authorize({
        connection: 'twitter'
      })
    }
  
    loginWithFacebook() {
      this.auth0.authorize({
        connection: 'facebook'
      })
    }
  
  }
  </code></pre>
  
  <p>And this is the error: </p>
  
  <pre><code>Object
  code
  :
  "access_denied"
  description
  :
  "Unauthorized"
  original
  :
  Error: Unauthorized at Request.&lt;anonymous&gt; (http://localhost:3000/static/js/bundle.js:49311:20) at Request.Emitter.emit (http://localhost:3000/static/js/bundle.js:49954:21) at XMLHttpRequest.xhr.onreadystatechange (http://localhost:3000/static/js/bundle.js:49616:11)
  statusCode
  :
  401
  statusText
  :
  "Unauthorized"
  </code></pre>
  
  <p>Any ideas on why I'm not able to Login ? </p>