0

나는 Firebase Phone Authentication을 사용하여 Kotlin 어플리케이션을 개발 중입니다. 나는이 verifyphonenumber 구현에 혼란스러워합니다. Kotlin에서 Firebase를 사용하여 전화 인증을 구현하는 방법은 무엇입니까?

private fun startPhoneNumberVerification(phoneNumber: String, mCallbacks: PhoneAuthProvider.OnVerificationStateChangedCallbacks?) { 
    Log.d("phoneNumber==", "" + phoneNumber); 
    PhoneAuthProvider.getInstance().verifyPhoneNumber(
      phoneNumber,  // Phone number to verify 
      60,     // Timeout duration 
      TimeUnit.SECONDS, // Unit of timeout 
      [email protected],    // Activity (for callback binding) 
      mCallbacks) 
} 

코드와 오류가 상기 구현 ("다음 아무 기능은 aruguments 공급하여 호출 될 수 없다")와 같은 "확장 기능을 생성 PhoneAuthProvider? .verifyPhoneNumber". 누군가 나를 안내 할 수 있습니까?

+0

오류가 무엇 나를 위해 작동

lateinit var mCallbacks: PhoneAuthProvider.OnVerificationStateChangedCallbacks 

로 선언? –

+0

@PeterHaddad가 업데이트되었습니다. 확인해 주시겠습니까? –

+0

타임 아웃은 'long'이므로 '60 '은 아마도 '60L'이어야합니다. – Michael

답변

1

Firebase 콜백 매개 변수가 Null이 아닌 것으로 주석 처리되어 있다고 가정합니다.

TL : 콜백 매개 변수에서 ?을 제거하거나 null이면 Kotlin에서 일부 마법 유형 유추를 수행 할 수 있습니다.

+0

니스. 고마워요 –

+0

굉장, upvoting과 정답으로 표시 마인드겠습니까? 감사! – SUPERCILEX

-1
class MainActivity : AppCompatActivity() { 

    var fbAuth = FirebaseAuth.getInstance() 


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

     var btnLogin = findViewById<Button>(R.id.btnLogin) 
     btnLogin.setOnClickListener {view -> 
      signIn(view,"[email protected]", "pass") 
     } 
    } 

    fun signIn(view: View,email: String, password: String){ 
     showMessage(view,"Authenticating...") 

     fbAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(this, OnCompleteListener<AuthResult> { task -> 
      if(task.isSuccessful){ 
       var intent = Intent(this, LoggedInActivity::class.java) 
       intent.putExtra("id", fbAuth.currentUser?.email) 
       startActivity(intent) 

      }else{ 
       showMessage(view,"Error: ${task.exception?.message}") 
      } 
     }) 

    } 

    fun showMessage(view:View, message: String){ 
     Snackbar.make(view, message, Snackbar.LENGTH_INDEFINITE).setAction("Action", null).show() 
    } 

} 
0

당신이 확실하기 때문에 콜백 당신이에서 onCreate이를 초기화하므로 null이되지 않습니다,이