基于 Firebase 承诺的身份验证流程始终重定向

Firebase promises-based Auth flow always redirects

我想让我的应用程序具有复制粘贴 "Firebase Authorize using Google" 流程——我确实这样做了,但有一个问题:它总是重定向到 Google,即使它已经获得授权并反弹回来。当用户最近通过身份验证并且是返回用户时,有什么方法可以让它 通过 Google 反弹?

Promise.resolve().then(function(){
  return new Promise(function(resolve) {
    console.group('init');

    firebase.initializeApp({
      apiKey: "MY KEY",
      authDomain: "MINE.firebaseapp.com",
      databaseURL: "https://MINE.firebaseio.com",
      storageBucket: "MINE.appspot.com",
      messagingSenderId: "ALSOMINE"
    });

    // Using this to make sure not in intermediate state
    firebase.auth().onAuthStateChanged(function(user) {
      console.log('User state stablilized.');
      resolve();
    });
  });
}).then(function() {
  // All the various login states
  return new Promise(function(resolve, reject) {
    if (firebase.auth().currentUser) {
      console.log('You were already logged in - great!')
      resolve(firebase.auth().currentUser);
    }

    firebase.auth().getRedirectResult().then(function(result) {
      if (result.user) {
        console.log('Welcome back and congratulations on your successful login!', result.user);
        resolve(result.user);
      } else {
        console.log('Not logged in, not returning - time to send you on your way.');
        var provider = new firebase.auth.GoogleAuthProvider();
        provider.addScope('https://www.googleapis.com/auth/plus.login');
        firebase.auth().signInWithRedirect(provider);
        console.log('You should never see this line because it redirected!');
      }
    }).catch(function(error) {
      console.error('Returning from redirect login error:', error);
      reject(error);
    });
  });

}).then(function(user) {
  console.log('Signed in user', firebase.auth().currentUser.email);
  // LETS ROCK

调用后:

解决(firebase.auth().currentUser);

通话:

return;