title: Handling linking accounts in Firebase
body: <p>I am following Firebase's instruction on social login.  Below is an example of what I am using and it is all working fine from a login authentication perspective.</p>
  
  <p>I have, however, both Google and Facebook login working independently.</p>
  
  <p>What I would like now to be able to do is link the accounts. You can see below in fact where this might go (<em>see the comment</em>):</p>
  
  <blockquote>
    <p>If you are using multiple auth providers on your app you should handle linking the user's accounts here.</p>
  </blockquote>
  
  <p>I have tried many variations of what I think should go here, but to no avail. Can anyone guide me in relation to what they think should go here? Thanks!</p>
  
  <pre><code>function initFBApp() {
      // Result from Redirect auth flow.
      // [START getidptoken]
      firebase.auth().getRedirectResult().then(function (result) {
          if (result.credential) {
              // This gives you a Facebook Access Token. You can use it to access the Facebook API.
              var token = result.credential.accessToken;
              // [START_EXCLUDE]
              document.getElementById('FBquickstart-oauthtoken').textContent = token;
          }
          else {
              document.getElementById('FBquickstart-oauthtoken').textContent = 'null';
              // [END_EXCLUDE]
          }
          // The signed-in user info.
          var user = result.user;
      }).catch(function (error) {
          // Handle Errors here.
          var errorCode = error.code;
          var errorMessage = error.message;
          // The email of the user's account used.
          var email = error.email;
          // The firebase.auth.AuthCredential type that was used.
          var credential = error.credential;
          // [START_EXCLUDE]
          if (errorCode === 'auth/account-exists-with-different-credential') {
              alert('You have already signed up with a different auth provider for that emails.');
              // If you are using multiple auth providers on your app you should handle linking
              // the user's accounts here.
          }
          else {
              console.error(error);
          }
          // [END_EXCLUDE]
      });
      // [END getidptoken]
      // Listening for auth state changes.
      // [START authstatelistener]
      firebase.auth().onAuthStateChanged(function (user) {
          if (user) {
              // User is signed in.
              var displayName = user.displayName;
              var email = user.email;
              var emailVerified = user.emailVerified;
              var photoURL = user.photoURL;
              var isAnonymous = user.isAnonymous;
              var uid = user.uid;
              var providerData = user.providerData;
              // [START_EXCLUDE]
              document.getElementById('FBquickstart-sign-in-status').textContent = 'Signed in';
              document.getElementById('FBquickstart-sign-in').textContent = 'Log out';
              document.getElementById('FBquickstart-account-details').textContent = JSON.stringify(user, null, '  ');
              // [END_EXCLUDE]
          }
          else {
              // User is signed out.
              // [START_EXCLUDE]
              document.getElementById('FBquickstart-sign-in-status').textContent = 'Signed out';
              document.getElementById('FBquickstart-sign-in').textContent = 'Log in with Facebook';
              document.getElementById('FBquickstart-account-details').textContent = 'null';
              document.getElementById('FBquickstart-oauthtoken').textContent = 'null';
              // [END_EXCLUDE]
          }
          // [START_EXCLUDE]
          document.getElementById('FBquickstart-sign-in').disabled = false;
          // [END_EXCLUDE]
      });
      // [END authstatelistener]
      document.getElementById('FBquickstart-sign-in').addEventListener('click', toggleFBSignIn, false);
  }
  </code></pre>