【发布时间】:2017-12-17 17:08:47
【问题描述】:
我正在开始一个新的 Android 项目并决定在其中使用 Kotlin 和 Firebase,现在我可以在我的电脑上使用 createUserWithEmailAndPassword 成功创建用户完成 createUserWithEmailAndPassword 后,SignupActivity 和我的用户都成功登录。
现在我正在尝试使用onAuthStateChanged(FirebaseAuth auth) 在FirebaseAuth.AuthStateListener 上触发的回调事件来进一步获取它,但是我在onCreate(savedInstanceState: Bundle?) 函数中创建的侦听器没有被触发并且我缺乏将 Java 代码转换为 Kotlin 的经验并不能帮助我找出根本问题。
我有一些 Java 示例代码可以这样使用:
Java 示例
onCreate(...//
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
// NOTE: this Activity should get onpen only when the user is not signed in, otherwise
// the user will receive another verification email.
sendVerificationEmail();
} else {
// User is signed out
}
// ...
}
};
我的 Kotlin 代码
FirebaseAuth.AuthStateListener { auth ->
val user = auth.currentUser
if(user != null){
// User is signed in
Log.d(TAG, "Signed in")
Toast.makeText(this, "User", Toast.LENGTH_LONG).show();
sendVerificationEmail()
}else{
// User is signed out
Log.d(TAG, "Signed out")
Toast.makeText(this, "Null", Toast.LENGTH_LONG).show();
}
}
我出于调试目的放置了一些日志和 toast 元素,但它们都没有被触发,我认为 FirebaseAuth.AuthStateListener 中缺少 onAuthStateChanged 但我不知道如何解决它。
如果有人能给我一些关于我做错了什么的建议,我将不胜感激。
提前致谢。
【问题讨论】:
-
不用问,您是否将
AuthStateListener添加到 FirebaseAuth 对象? -
你能详细说明一下吗?我使用
AuthStateListener的唯一部分是我发布的sn-p,我需要把它放在我活动的其他部分吗?谢谢@chandil03 -
您刚刚初始化了
AuthStateListener对象,现在您必须将其分配给 FirebaseAuth 对象,以告知这是身份验证状态更改时要联系的人。 -
谢谢@chandil03,我该如何做这个作业?当我使用 createUserWithEmailAndPassword 时,它非常简单(只需声明 FirebaseAuth 对象并调用该方法)但我不知道侦听器上缺少哪个分配。
-
检查 firebaseAuth 对象上的 add..stateListener() 方法,由 FirebaseAuth.getInstance() 方法创建。
标签: android firebase firebase-authentication listener kotlin