У меня есть приложение реагирования, в котором я пытаюсь реализовать аутентификацию с помощью firebase. Регистрация, кажется, в порядке: зарегистрированные пользователи отображаются в моей консоли Firebase. Но у меня возникают проблемы при входе на работу.
У меня есть файл firebase.tsx со следующими функциями, в том числе:
import "firebase/auth";
import "firebase/firebase-firestore";
const config = {
//removed for privacy reasons
};
class Firebase {
constructor() {
app.initializeApp(config);
}
login(email: any, password: any) {
console.log("login function called");
return app
.auth()
.signInWithEmailAndPassword(email, password)
.then(() => {
console.log("signInWithEmailAndPassword succes");
})
.catch(err => {
console.log(err);
});
}
logout() {
return app.auth().signOut();
}
async register(name: any, email: any, password: any) {
await app.auth().createUserWithEmailAndPassword(email, password);
//@ts-ignore
return app.auth().currentUser.updateProfile({
displayName: name
});
}
getCurrentUsername() {
console.log(app.auth().currentUser);
//@ts-ignore
return app.auth().currentUser.displayName;
}
isInitialized() {
console.log("is initialized is called in firebase.tsx");
return new Promise(resolve => {
app.auth().onAuthStateChanged(resolve);
}).then(() => {
console.log("onauthstatechange resolved");
});
}
}
export default new Firebase();
, в моем файле app.tsx, среди прочего, этот код:
const [firebaseInitialized, setFirebaseInitialized] = useState(false);
useEffect(() => {
firebase.isInitialized().then((val: any) => {
console.log(JSON.stringify(val));
setFirebaseInitialized(val);
});
}, [firebaseInitialized]);
когда я нажимаю кнопку входа в моем приложении, вызывается функция входа из firebase.tsx, потому что консоль говорит «функция входа вызвана». «signInWithEmailAndPassword succes» не отображается в консоли, но, что примечательно, также не появляется сообщение об ошибке из .catch (если я не вхожу в систему с ложными учетными данными). Так что, вероятно, что-то не так с этой частью, но я не понимаю, почему или как. Что происходит, так это то, что введенные имя пользователя и пароль отображаются в URL моего браузера. «Инициализируется, вызывается в firebase.tsx», а «onauthstatechange разрешен» также отображаются в консоли.
Итак, в журнал заносятся следующие вещи:
- «Функция входа в систему называется ";
- " инициализируется, вызывается в firebase.tsx "
- " onauthstatechange разрешен "
- " undefined "
поступает неопределенный журнал с console.log(JSON.stringify(val));
в хуке useEffect. использование браузера в режиме инкогнито не имеет значения
Любые идеи будут с благодарностью.