Ich bin auf dem Weg, meine erste Progressive Web-App zu erstellen, die Firebase für die Speicherung von Daten verwendet. Ich verwende auch Gmail
als Einstiegspunkt für alle Benutzer, die die App verwenden würden. Ich bin jedoch bei der Implementierung der Anmeldung festgefahren. Unten ist mein der Code für die Anmeldung:Google-Authentifizierung in Firebase zeigt leeren Bildschirm Progressive Web App
html:
<button md-raised-button color="warn" (click)="logInGoogle()"><md-icon>group</md-icon>Sign in with google to enjoy the app</button>
ts:
logInGoogle(){
this.authService.loginWithGoogle().then(user => {
console.log("User is logged in");
//this.router.navigate(['/addweather']);
})
.catch(err => {
console.log('some error occured');
})
}
Hier ist der Service:
loginWithGoogle() {
return this.afAuth.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider());
}
Auch die auth
Zustand zu überprüfen, ich habe dies in meinem app.component.ts
Erbauer:
this.authService.afAuth.authState.subscribe(
(auth) => {
if(auth === null){
console.log("Not Logged in.");
this.router.navigate(['login']);
this.isLoggedIn = false;
}
else {
console.log("Successfully Logged in.");
this.isLoggedIn = true;
this.router.navigate(['']);
}
}
)
Nun gibt es ein paar Verhaltensweisen, die die App zeigt, ist:
Diese Login-Funktionalität auf Browsern funktioniert Coz, wenn ich auf den Login-Button öffnet sich ein neues Fenster, autorisiert mich und kehrt zu demselben Tab zurück, auf dem die App geöffnet ist.
Wenn ich die App auf dem Bildschirm zu Hause hinzufügen und versuchen Sie es erneut einzuloggen es mir unter Optionen veranlassen:
Sobald ich auf Chrom klicken, ermächtigt sie mich und leitet mich zur App, aber die App zeigt jetzt einen leeren Bildschirm und der oAuth-Bildschirm geht gerade in einen unendlichen Verarbeitungszustand. Warum passiert das? Ich meine, sollte es nicht einfach so funktionieren, wie es funktionierte, wenn die App im Browser ausgeführt wurde.
Auch beim Klicken auf den Login-Button sollte die Option nicht wie im obigen Bild angezeigt werden; Stattdessen sollte es einen oAuth-Dialog öffnen. Ich habe versucht, dies zu tun auch mit dem folgenden Code:
logInGoogle(){
var newWindow = window.open('https://accounts.google.com/o/oauth2/auth?scope=https://www.google.com/m8/feeds&client_id=9722-j3fstr5sh6pumie.apps.googleusercontent.com&redirect_uri=https://weatherapp321.firebaseapp.com/__/auth/handler&response_type=token', 'name', 'height=600,width=450');
}
Dies nun statt Aufforderung mit den Optionen öffnet einen Dialog, das gewünscht wird. Aber nach der Autorisierung landet das auf der Anmeldeseite. Warum passiert das? wenn ich bereits den Authentifizierungsstatus in app.component.ts
überprüfe und den Benutzer auf die Startseite umadressiere, wenn der Benutzer autorisiert wird.
Danke für Geduld und Lesen bis zum Ende. Hilfe wäre sehr willkommen.
bearbeiten
Wie von Yevgen vorgeschlagen: mit signInWithRedirect
Versuchte. Es funktionierte, als ich mich zum ersten Mal mit einer leichten Verzögerung von 2 Sekunden anmeldete. Aber dann loggte ich mich aus und versuchte mich erneut einzuloggen, ich bekomme einen leeren Bildschirm nachdem ich mich eingeloggt habe.
Es spielt das erste Mal arbeiten mit 'signInWithRedirect', wenn der Benutzer nicht angemeldet ist aber mit einer Verzögerung von 3 Sekunden. Und auch wenn ich mich abmelde und dann wieder versuche mich einzuloggen, meldet mich die App an, zeigt dann aber einen leeren Bildschirm. –
Ich kann die URL teilen, wenn Sie möchten, und dann können Sie es auf Ihrem mobilen Gerät versuchen. –