IWI*_*IWI 4 javascript firebase firebase-authentication
我有一个连接到 monaca CLI 和 OnsenUI 的 firebase 应用程序。我正在尝试创建一个用户并在同一操作中将其登录。我可以成功创建用户,但我无法登录。当我登录时,出现以下错误
auth/user-not-found
Run Code Online (Sandbox Code Playgroud)
和
There is no user record corresponding to this identifier. The User may have been deleted
Run Code Online (Sandbox Code Playgroud)
我确认新用户在数据库中......这是我的注册和登录代码
//signup function stuff
var login = function() {
console.log('got to login stuff');
var email = document.getElementById('username').value;
var password = document.getElementById('password').value;
//firebases authentication code
firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
console.log('User did not sign up correctly');
console.log(errorCode);
console.console.log(errorMessage);
});
firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
console.log(error.code);
console.log(error.message);
});
fn.load('home.html');
};
Run Code Online (Sandbox Code Playgroud)
您的流程中存在所谓的竞争条件。
当您调用createUserWithEmailAndPassword()Firebase时,开始创建用户帐户。但这可能需要一些时间,因此浏览器中的代码会继续执行。
它立即继续signInWithEmailAndPassword()。由于 Firebase 可能仍在创建用户帐户,因此此调用将失败。
对于这种情况,通常的解决方案是将调用链接在一起,例如then():
firebase.auth().createUserWithEmailAndPassword(email, password).then(function(user) {
firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
console.log(error.code);
console.log(error.message);
});
}).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
console.log('User did not sign up correctly');
console.log(errorCode);
console.console.log(errorMessage);
});
Run Code Online (Sandbox Code Playgroud)
但正如安德烈·库尔 (André Kool) 已经评论过的那样:创建一个用户已经自动登录,所以在这种情况下,您可以这样做:
firebase.auth().createUserWithEmailAndPassword(email, password).then(function(user) {
// User is created and signed in, do whatever is needed
}).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
console.log('User did not sign up correctly');
console.log(errorCode);
console.console.log(errorMessage);
});
Run Code Online (Sandbox Code Playgroud)
您可能很快还想检测用户在访问您的页面时是否已登录。为此,您将使用onAuthStateChanged. 从文档:
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
} else {
// No user is signed in.
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7379 次 |
| 最近记录: |