无法通过Firebase电话身份验证发送短信

时间:2020-04-05 15:11:36

标签: android firebase kotlin firebase-authentication

我是科特林的新朋友。尝试通过Firebase电话身份验证发送短信,但是我得到了

致命异常:主要

kotlin.UninitializedPropertyAccessException:lateinit属性回调尚未初始化

这是我的代码

class LoginActivity : AppCompatActivity() {

    private lateinit var callbacks: PhoneAuthProvider.OnVerificationStateChangedCallbacks

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.login);

        val phoneNumber = findViewById<EditText>(R.id.phoneNumber)
        val loginButton = findViewById<Button>(R.id.loginButton)
        loginButton.setOnClickListener {

            PhoneAuthProvider.getInstance().verifyPhoneNumber(
                phoneNumber.text.toString().drop(1), // Phone number to verify
                60, // Timeout duration
                TimeUnit.SECONDS, // Unit of timeout
                this, // Activity (for callback binding)
                callbacks) // OnVerificationStateChangedCallback

            callbacks = object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
                override fun onVerificationCompleted(p0: PhoneAuthCredential) {
                    //
                }

                override fun onVerificationFailed(p0: FirebaseException) {
                    //
                }


            }

        }

    }
}

1 个答案:

答案 0 :(得分:0)

val不同,lateinit var成员不需要您在实例化类时对其进行初始化。但是,如果在分配它们之前尝试使用它们,则会出现该错误。

您的代码将callback作为参数传递给verifyPhoneNumber(),然后在下面的行中对其进行定义。重新排序代码以首先分配它,然后再使用它。