code: function(error) {
      // Ignore error if cancelled by the client.
      if (error['name'] && error['name'] == 'cancel') {
        return;
      }
      // Check if the error was due to an expired credential.
      // This may happen in the email mismatch case where the user waits more
      // than an hour and then proceeds to sign in with the expired credential.
      // Display the relevant error message in this case and return the user to
      // the sign-in start page.
      if (firebaseui.auth.widget.handler.common.isCredentialExpired(error)) {
        var container = component.getContainer();
        // Dispose any existing component.
        component.dispose();
        // Call widget sign-in start handler with the expired credential error.
        firebaseui.auth.widget.handler.common.handleSignInStart(
            app,
            container,
            undefined,
            firebaseui.auth.soy2.strings.errorExpiredCredential().toString());
      } else {
        var errorMessage = (error && error['message']) || '';
        if (error['code']) {
          // Firebase Auth error.
          // Errors thrown by anonymous upgrade should not be displayed in
          // info bar.
          if (error['code'] == 'auth/email-already-in-use' ||
              error['code'] == 'auth/credential-already-in-use') {
            return;
          }
          errorMessage =
              firebaseui.auth.widget.handler.common.getErrorMessage(error);
        }
        // Show error message in the info bar.
        component.showInfoBar(errorMessage);
      }
    }
docs: For any error, display in info bar message.