FB.auth().currentUser ist null
Ich versuche abzurufen, die UID des aktuell angemeldeten FB-user in meinem Winkel 4 app. Obwohl, wenn ich logging 'FB.auth().currentUser' auf der Konsole bekomme ich eine 'null'. So 'FB.auth().currentUser.uid' gibt ein " Cannot read property 'uid' null' Fehlers.
Laut diesem Artikel https://firebase.google.com/docs/auth/web/manage-users das würde bedeuten, dass ich derzeit nicht angemeldet. Obwohl, ich bin, seit ich Lesen kann Daten aus meiner Datenbank (meine Regeln nicht, die nicht authentifizierten Benutzern), und die login-Methode nicht gab irgendwelche Fehler.
Kann ich auch sehen, dass der Benutzer mit der uid 1 angemeldet ist, in der FB-Konsole (.../u/1/Projekt/mein-Projekt/authentication/user)
Meine Datenbank Regeln:
{
"rules": {
"users": {
"$uid": {
".write": "$uid === auth.uid",
".read": "$uid === auth.uid"
}
}
}
}
Hinweis: ich bin nicht mit jedem der FB-login-Methoden. Ich bin mit meinem php-back-end um Benutzer zu überprüfen, und erzeugen Sie eine benutzerdefinierte Zeichen für FB, genau wie hier beschrieben: https://firebase.google.com/docs/auth/admin/create-custom-tokens.
Winkel 4 login code:
constructor(private afAuth: AngularFireAuth) {
this.login();
}
login() {
console.log('We are logging in on Firebase :)');
firebase.auth().signInWithCustomToken(localStorage.getItem('firebase_token')).catch(function (error) {
console.log(error.message);
console.log('You are not logged in!');
});
this.user = firebase.auth().currentUser;
console.log(firebase.auth().currentUser);
console.log(firebase.auth().currentUser.uid);
}
Die Ausgabe der Konsole:
chat.service.ts:59 We are logging in on Firebase :)
chat.service.ts:65 null
ChatComponent_Host.html:1 ERROR TypeError: Cannot read property 'uid' of null
at ChatService.Array.concat.ChatService.login (chat.service.ts:66)
at new ChatService (chat.service.ts:23)
at _createClass (core.es5.js:9572)
at _createProviderInstance$1 (core.es5.js:9544)
at resolveNgModuleDep (core.es5.js:9529)
at NgModuleRef_.get (core.es5.js:10615)
at resolveDep (core.es5.js:11118)
at createClass (core.es5.js:10971)
at createDirectiveInstance (core.es5.js:10802)
at createViewNodes (core.es5.js:12230)
at createRootView (core.es5.js:12125)
at callWithDebugContext (core.es5.js:13506)
at Object.debugCreateRootView [as createRootView] (core.es5.js:12823)
at ComponentFactory_.create (core.es5.js:9916)
at ComponentFactoryBoundToModule.create (core.es5.js:3333)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, Sie sollten Ihren code so modifizieren, das folgende ein, und versuchen Sie es erneut :-
Mithilfe
then
sind, möchten Sie stellen Sie sicher, dass die Anmelde-Versprechen zurückgegeben wurde erfolgreich vor dem Zugriff auf die signierten im Benutzer-Objekt.Sind Sie mit der currentUser-variable, wenn FB immer noch nicht geladen-Daten von lokalen. So, um zu wissen, Wann die currentUser-variable initiiert wird, können Sie den Rückruf für onAuthStateChanged.