Firebase电话号码身份验证:使用提供的参数不能调用以下功能

时间:2019-05-31 20:43:23

标签: android kotlin firebase-authentication

这是Firebase PhoneNumberAuthentication的kotlin代码 https://github.com/firebase/quickstart-android/blob/master/auth/app/src/main/java/com/google/firebase/quickstart/auth/kotlin/PhoneAuthActivity.kt
此方法“ PhoneAuthProvider.getInstance()。verifyPhoneNumber” 给我错误“以下任何函数都不能通过提供的参数调用” ,并提示我通过以下方法创建新函数说创建扩展功能PhoneAuthProvider.verifyPhoneNumber 。这是多余的,因为此方法是“ com.google.firebase.auth。*” 的一部分。

错误详细信息:

None of the following functions can be called with the arguments supplied:
public final fun verifyPhoneNumber(@NonNull p0: String, p1: Long, p2: TimeUnit!, @NonNull p3: (Runnable!) -> Unit, @NonNull p4: PhoneAuthProvider.OnVerificationStateChangedCallbacks): 
Unit defined in com.google.firebase.auth.PhoneAuthProvider

代码:

PhoneAuthProvider.getInstance().verifyPhoneNumber(
    phoneNumber, // Phone number to verify
    60, // Timeout duration
    TimeUnit.SECONDS, // Unit of timeout
    applicationContext, // Activity (for callback binding)
    mCallbacks
)  

此代码在Java中工作正常。
有什么想法吗。我该怎么办。谢谢

2 个答案:

答案 0 :(得分:0)

此代码中的问题是,我正在初始化带有null的firebase字段,这是Lateinit所需要的。因此,通过删除null初始化,它可以正常工作。

答案 1 :(得分:0)

如果您要分段获取,请确保将this更改为requireActivity()

  PhoneAuthProvider.getInstance().verifyPhoneNumber(
                    phoneNumber, // Phone number to verify
                    60, // Timeout duration
                    TimeUnit.SECONDS, // Unit of timeout
                    requireActivity(), // Activity (for callback binding)
                    callbacks) // OnVerificationStateChangedCallbacks