Как перенаправить после входа пользователя с помощью аутентификации Firebase?

Как я могу перенаправить на другую веб-страницу после того, как пользователь вошел в систему?

В настоящее время, когда пользователь входит в систему, данные извлекаются, однако он не перенаправляет пользователя на другой веб-сайт.

Я знаю, что должен использовать 'getRedirectResult', но может кто-нибудь показать мне, как его использовать и как он перенаправляет пользователя на другую веб-страницу, сохраняя полученные пользовательские данные.

Моя работа с JavaScript:

function toggleSignIn() {
  if (!firebase.auth().currentUser) {
    // [START createprovider]
    var provider = new firebase.auth.GoogleAuthProvider();
    // [END createprovider]
    // [START addscopes]
    provider.addScope('https://www.googleapis.com/auth/plus.login');
    // [END addscopes]
    // [START signin]
    firebase.auth().signInWithPopup(provider).then(function(result) {
      // This gives you a Google Access Token. You can use it to access the Google API.
      var token = result.credential.accessToken;
      // The signed-in user info.
      var user = result.user;
      // [START_EXCLUDE]
      document.getElementById('quickstart-oauthtoken').textContent = token;
      // [END_EXCLUDE]
    }).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 email.");
        // If you are using multiple auth providers on your app you should handle linking
        // the user's accounts here.
      }
  else if (errorCode === 'auth/auth-domain-config-required') {
    alert("An auth domain configuration is required"); 
      }
      else if (errorCode === 'auth/cancelled-popup-request') {
          alert("Popup Google sign in was canceled");
      }
      else if (errorCode === 'auth/operation-not-allowed') {
          alert("Operation is not allowed");
      }
      else if (errorCode === 'auth/operation-not-supported-in-this-environment') {
          alert("Operation is not supported in this environment");
      }
      else if (errorCode === 'auth/popup-blocked') {
          alert("Sign in popup got blocked");
      }
      else if (errorCode === 'auth/popup-closed-by-user') {
          alert("Google sign in popup got cancelled");
      }
      else if (errorCode === 'auth/unauthorized-domain') {
          alert("Unauthorized domain");
      }
       else {
        console.error(error);
      }
      // [END_EXCLUDE]
    });
    // [END signin]
  } else {
    // [START signout]
    firebase.auth().signOut();
    // [END signout]
  }
  // [START_EXCLUDE]
  document.getElementById('quickstart-sign-ing').disabled = false;
  // [END_EXCLUDE]
}
 mulu gebreselassie26 июн. 2016 г., 01:24
Я хочу знать, как реализовать "getRedirectResult" в этом коде JavaScript. И я также использую HTML
 Zimano26 июн. 2016 г., 00:57
Вам не нужно извиняться за то, что вы не правильно пишете по-английски. Вы можете, однако, показать нам, что вы уже пробовали, или, по крайней мере, указать нам документы, которые вы прочитали по теме, которую вы не поняли!

Ответы на вопрос(2)

Если вы создаете одностраничное приложение, вам, скорее всего, не нужно перенаправлять. Вместо этого вы просто изменили бы состояние своего приложения, когда пользователь входит в систему. Однако, если вы действительно хотите изменить URL-адрес, вы можете просто установить местоположение окна с помощью JavaScript в вашем успешном обратном вызове. Например:

window.location = '/logged_in.html'

Обратите внимание, что на новой странице вам также необходимо прослушивать состояние аутентификации:

firebase.auth().onAuthStateChanged(function(currentUser) {
  if (currentUser) {
    // the user is logged in, you can bootstrap functionality now
  }
});

В общем, приложения Firebase в Интернете будут работать лучше, если выне структурировать ваше приложение так, чтобы между страницами переходов между состояниями требовалась жесткая загрузка страниц. Все может и в идеале должно управляться с использованием JavaScript, не требуя дополнительной загрузки страницы.

 mulu gebreselassie26 июн. 2016 г., 12:53
Знаете ли вы, как реализовать это в моем коде JavaScript
 mulu gebreselassie26 июн. 2016 г., 22:47
Перенаправление работает, но не поддерживает извлеченные пользовательские данные.
 mulu gebreselassie27 июн. 2016 г., 20:29
Однако есть ли способ сохранить вошедшего в систему пользователя. Я слышал, что с помощью «getRedirectResult» вы можете поддерживать зарегистрированного пользователя
 bojeil27 июн. 2016 г., 08:14
Эй, Мулу, ты пытаешься войти на страницу с другим источником, как на странице входа? Аутентификация Firebase для веб-сайтов только для одного хоста. Если после входа вы перенаправите на другую веб-страницу, зарегистрированный пользователь будет недоступен.
Решение Вопроса

Вам просто нужно добавить два перенаправления внутри initApp (), чтобы это произошло. Я имею в виду быстрый старт Git-репоhttps://github.com/firebase/quickstart-js/blob/master/auth/email.html, как я пришел сюда через дублирующий вопросПеренаправление на страницу после входа в Firebase - Javascript

1) в строке 163 добавьте страницу, на которую вы хотите перенаправить зарегистрированных пользователей:

162 //User is signed in.
163 window.location = ‘loggedIn.html’;
164 var displayName = user.displayName;

2) в строке 180 (теперь 181 из-за добавления выше) добавьте перенаправление назад на страницу входа:

180 // User is signed out.
181 window.location = ‘index.html’;
182 // [START_EXLUDE]

Вам нужно добавить весь скрипт как в индекс, так и вошедшие в него страницы - так что все (включая теги скрипта) между строками 37 и 201 из исходного репозитория git (но с двумя добавлениями перенаправления, описанными выше).

Теперь, если вы попытаетесь перейти непосредственно в loggedIn.html без входа в систему, функция initApp проверит, вошли ли вы в систему, увидит ли вы ее и перенаправит ли вас на страницу входа.

Единственная проблема заключается в том, что вы быстро перепрограммируете зарегистрированный контент перед перенаправлением, поэтому, чтобы обойти это, вы можете установить тело этой страницы как скрытое, и иметь скрипт, который запускается, если пользователь вошел в систему, который удаляет скрытый учебный класс.

Наконец, вы хотите добавить перенаправление внутри функции toggleSignIn в строке 46 исходного репо:

45  firebase.auth().signOut();
46  window.location = ‘index.html’;
47  // [END signout]

Ваш ответ на вопрос