我将应用程序的Firebase版本从3.5.0升级到4.1.3,并注意到在用户验证其电子邮件地址后首次成功登录后,不再调用onAuthStateChange回调函数。
该应用程序是用JavaScript编写的。
这些是我的代码的相关部分:
回调设置
firebase.auth().onAuthStateChanged(onAuthStateChange);
回拨
function onAuthStateChange (user) {
console.log(user); // Not appearing in console
}
签到
firebase.auth().signInWithEmailAndPassword(email, password)
.then(function (user) {
console.log("signInWithEmailAndPassword success"); // This appears in the console
})
.catch(function(error) {
console.log("signInWithEmailAndPassword", error);
self.signInError = error.message;
$timeout(function () {
$scope.$apply();
});
});
编辑-以下是重现问题的步骤(我的应用程序用户的典型操作):
用于开发和测试目的(不是用户会做的,但我已经做了)
试试这种方法,我希望它能奏效
firebase.auth().onAuthStateChanged(function(user){
console.log(user);
})
问题是auth(). createUserSusEmailAndPassword()实际上确实登录了一种用户类型。
你会发现,如果你输入
firebase.auth().onAuthStateChanged(user => {
console.log("onAuthStateChanged()");
createUserWithEmailAndPassword()确实会触发控制台日志。但是,似乎没有有效的“user”对象,这可以解释为什么您只记录用户,所以没有任何东西出现。
我遇到了完全相同的问题。在sendEmail验证()步骤中,请注意它如何要求您使用auth()。当前用户,发出信号表明必须有某种用户登录(我不确定Firebase如何处理电子邮件验证用户和幕后未验证用户之间的区别)
您可以在发送电子邮件验证后简单地调用 signOut() 函数,它应该允许 onAuthStateChanged() 函数在首次登录时调用(无需重新加载应用程序)
firebase.auth().currentUser.sendEmailVerification()
.then(() => {
console.log("Email verification sent");
firebase.auth().signOut().then(() => {
console.log("Signed out!");
}).catch((err) => {
console.log("Error signing out!", err);
});
令人困惑的是,您实际上可以成功地“登录”,而不会导致AuthStateChanged发生更改或返回任何错误。
TLDR:记得使用auth()。发送电子邮件验证后的signOut()函数。
问题内容: 我希望django通过电子邮件而非用户名对用户进行身份验证。一种方法是提供电子邮件值作为用户名值,但我不希望这样。原因是,我有一个,所以我不能有一个。 另一个原因是所有电子邮件都是唯一的,但有时用户名已被使用。因此,我将自动创建用户名为。 我该如何更改才能让Django通过电子邮件进行身份验证? 这就是我创建用户的方式。 这就是我的登录方式。 除了先获取用户名外,登录还有其他方法吗?
我希望django通过电子邮件而不是用户名来验证用户。一种方法是提供电子邮件值作为用户名值,但我不希望这样。原因是,我有一个url
我想登录我的spotify帐户并获取我的持有者令牌。我试图用请求模块执行此操作,但我无法管理登录操作。如果您告诉我如何使用请求模块登录帐户并获取持有者令牌,我将非常高兴。如果您不知道这一点,如果您可以登录硒模块的帐户并告诉我如何获取下图中的值,我将非常高兴:)(登录帐户是通过邮件,密码)
在“登录苹果”上,如果用户选择了“隐藏我的电子邮件”,他将注册一个私人电子邮件ID。同样,如果同一个用户尝试使用原始电子邮件地址(使用任何社交媒体帐户或原始电子邮件id)注册,他将被视为不同的用户? 如何可能确保我们在注册后数据库中有一个唯一的用户?
首次登陆的用户名和密码有二个,分别为: 用户名:admin 密码 :admin 用户名:user0 密码:user0 账号admin是系统管理员权限,账号user0是普通用户,属于设计角色,拥有设计权限。 在登录后,注意更改账号密码。
我希望身份验证组件允许用户登录输入用户名或电子邮件。在我的用户表中,两个字段-userName和userEmail都是唯一的。注册时,密码生成如下: sha1($username.$password); 问题是用户无法使用电子邮件登录。 应用程序控制器 用户控制器:登录功能如下: Auth。php:(我在这里对生成密码的方式做了一些更改,因为我正在使用cakephp会话自动登录到SMF论坛。) 我