2016-07-20 7 views
3

Ref this linkFirebase Google Anmelden (Web) flow

Hallo alle. Hier ist mein Code, ich habe zwei Probleme

Zuerst wollte ich wissen, meine Anmeldung ist korrekt oder nicht?

Meine Logik ist, wenn der Benutzer meines Index-Seite

eingegeben

Ich werde Benutzer Einbuchzustand erste

überprüfen, ob Benutzer nicht dann Benutzer gefragt anmelden anmelden.

function google_login_in(){ 
     var provider = new firebase.auth.GoogleAuthProvider(); 
     provider.addScope('https://www.googleapis.com/auth/plus.login'); 
     firebase.auth().signInWithPopup(provider).then(function(result) { 
      var token = result.credential.accessToken; 
      var user = result.user; 
     }).catch(function(error) { 
      var errorCode  = error.code; 
      var errorMessage = error.message; 
      var email   = error.email; 
      var credential = error.credential; 
     });   
    } 

    function print_user(user) { 
     user.providerData.forEach(function (profile) { 
      console.log("Sign-in provider: "+profile.providerId); 
      console.log(" Provider-specific UID: "+profile.uid); 
      console.log(" Name: "+profile.displayName); 
      console.log(" Email: "+profile.email); 
      console.log(" Photo URL: "+profile.photoURL); 
     }); 
    } 

    firebase.auth().onAuthStateChanged(function(user) { 
     if (user) { 
      print_user(user); 
     } else { 
      google_login_in(); 
     } 
    }); 

Und zweitens, wie man "signInWithRedirect" verwendet?

Der Link sagen

So „durch Umleitung auf die Anmeldeseite, rufen signInWithRedirect Um sich anzumelden“, wenn der Benutzer bereits anmelden ist, und ich möchte „B.html“ Seite umleiten

Wie Kann ich diese Funktion benutzen?

firebase.auth().signInWithRedirect("B.html"); 

Antwort

4

Ihre Strömung ist in der Regel in Ordnung, obwohl Sie wahrscheinlich wollen aus zwei Gründen nicht google_login_in() aus onAuthStateChanged auslösen:

  1. Der Zuhörer null während der Initialisierung Feuer kann. Es soll ein positiver Indikator für den Anmeldestatus sein, und nur die Anwesenheit des Benutzers (nicht Abwesenheit) ist dafür zuverlässig.
  2. Browser ignorieren Anfragen zum Öffnen von Popup-Fenstern, die nicht von Benutzeraktionen stammen. Sie sollten die Anmeldung beispielsweise an ein Klickereignis auf einer Schaltfläche anhängen oder signInWithRedirect verwenden.

Was mich zu signInWithRedirect() bringt - dies bedeutet nicht, dass Ihre Anwendung, sondern als die Firebase Auth Prozess über Umleitung findet statt in einem Popup-Fenster umleiten wird. Diese kann ausgelöst werden, ohne Benutzerinteraktion, jedoch wird es eine vollständige Seite neu laden, den Benutzer weg von der aktuellen Seite und dann bringt sie zurück.

Wenn Sie auf eine andere URL umleiten möchten, wenn der Benutzer authentifiziert wird, sollten Sie einfach warten, bis onAuthStateChanged anzeigt, dass ein Benutzer angemeldet ist, und dann mit z. window.location = '/B.html'

+0

Vielen Dank Ihre Hilfe –