尝试验证电话号码Firebase身份验证

时间:2019-06-09 16:50:01

标签: android xml firebase kotlin firebase-authentication

我正在尝试使用Firebase制作电话强化方法,但是当我尝试验证我的电话号码时(当我单击“ veriBtn”时),我的应用加载了一段时间,然后崩溃了。

代码:

RegisterLoginActivity

package com.example.madistrezsieu

import android.content.Intent

import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.google.android.gms.tasks.Task
import com.google.firebase.FirebaseException
import com.google.firebase.auth.AuthResult
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.PhoneAuthCredential
import com.google.firebase.auth.PhoneAuthProvider
import kotlinx.android.synthetic.main.activity_register_login.*
import java.util.concurrent.TimeUnit


class RegisterLoginActivity : AppCompatActivity() {

    lateinit var mCallbacks: PhoneAuthProvider.OnVerificationStateChangedCallbacks
    lateinit var mAuth: FirebaseAuth
    var verificationId = ""


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_register_login)
        mAuth = FirebaseAuth.getInstance()
        veriBtn.setOnClickListener {
                view: View? -> progress.visibility = View.VISIBLE
            verify ()
        }
        authBtn.setOnClickListener {
                view: View? -> progress.visibility = View.VISIBLE
            authenticate()
        }
    }


    private fun verificationCallbacks () {
        mCallbacks = object: PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
            override fun onVerificationCompleted(credential: PhoneAuthCredential) {
                progress.visibility = View.INVISIBLE
                signIn(credential)
            }

            override fun onVerificationFailed(p0: FirebaseException?) {
                TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
            }

            override fun onCodeSent(verfication: String?, p1: PhoneAuthProvider.ForceResendingToken?) {
                super.onCodeSent(verfication, p1)
                verificationId = verfication.toString()
                progress.visibility = View.INVISIBLE
            }

        }
    }

    private fun verify () {

        verificationCallbacks()

        val phnNo = phnNoTxt.text.toString()

        PhoneAuthProvider.getInstance().verifyPhoneNumber(
            phnNo,
            60,
            TimeUnit.SECONDS,
            this,
            mCallbacks
        )
    }

    private fun signIn (credential: PhoneAuthCredential) {
        mAuth.signInWithCredential(credential)
            .addOnCompleteListener {
                    task: Task<AuthResult> ->
                if (task.isSuccessful) {
                    toast("Logged in Successfully :)")
                    startActivity(Intent(this, LatestMessagesActivity::class.java))
                }
            }
    }

    private fun authenticate () {

        val verifiNo = verifiTxt.text.toString()

        val credential: PhoneAuthCredential = PhoneAuthProvider.getCredential(verificationId, verifiNo)

        signIn(credential)

    }

    private fun toast (msg: String) {
        Toast.makeText(this, msg, Toast.LENGTH_LONG).show()
    }


}

进度条加载了一段时间,但是应用程序崩溃了。我以为可能是因为迁移到Androidx,但我不确定。

activity_register_login.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                tools:context="com.example.madistrezsieu.RegisterLoginActivity">

    <EditText
            android:id="@+id/phnNoTxt"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="88dp"
            android:hint="Phone Number"
            android:inputType="number"
            android:textAlignment="center"
            android:textSize="24sp" />

    <EditText
            android:id="@+id/verifiTxt"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:textAlignment="center"
            android:inputType="number"
            android:layout_below="@+id/phnNoTxt"
            android:layout_marginTop="43dp"
            android:hint="Verification Code" android:layout_alignParentLeft="true"/>

    <Button
            android:id="@+id/veriBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/verifiTxt"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="35dp"
            android:text="Verify" />

    <Button
            android:id="@+id/authBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/veriBtn"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="26dp"
            android:text="Authenticate" />

    <ProgressBar
            android:id="@+id/progress"
            style="?android:attr/progressBarStyle"
            android:layout_width="150dp"
            android:layout_height="150dp"
            android:layout_alignTop="@+id/phnNoTxt"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="28dp"
            android:visibility="invisible" />
</RelativeLayout>

LogCat

06-09 19:47:35.722 13101-13149/com.example.madistrezsieu V/FA: Connection attempt already in progress
06-09 19:47:35.722 13101-13149/com.example.madistrezsieu V/FA: Connection attempt already in progress
06-09 19:47:35.722 13101-13149/com.example.madistrezsieu V/FA: Activity resumed, time: 52382490
06-09 19:47:35.802 13101-13101/com.example.madistrezsieu W/art: Before Android 4.1, method int androidx.appcompat.widget.DropDownListView.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
06-09 19:47:35.842 13101-13101/com.example.madistrezsieu I/InputMethodManager: [startInputInner] EditorInfo { packageName=com.example.madistrezsieu, inputType=0x2, imeOptions=0x8004005, privateImeOptions=null }, windowGainingFocus=android.view.ViewRootImpl$W@c162114, mServedView=androidx.appcompat.widget.AppCompatEditText{cf85dbd VFED..CL. .F.P..I. 0,176-720,283 #7f0800a6 app:id/phnNoTxt}, mServedInputConnectionWrapper=android.view.inputmethod.InputMethodManager$ControlledInputConnectionWrapper@f7dafb2
06-09 19:47:35.852 13101-13149/com.example.madistrezsieu D/FA: Connected to remote service
06-09 19:47:35.852 13101-13149/com.example.madistrezsieu V/FA: Processing queued up service tasks: 4
06-09 19:47:40.942 13101-13149/com.example.madistrezsieu V/FA: Inactivity, disconnecting from the service
06-09 19:47:44.672 13101-13101/com.example.madistrezsieu W/BiChannelGoogleApi: [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzak@879c56b
06-09 19:47:47.072 13101-13101/com.example.madistrezsieu E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.madistrezsieu, PID: 13101
    kotlin.NotImplementedError: An operation is not implemented: not implemented
        at com.example.madistrezsieu.RegisterLoginActivity$verificationCallbacks$1.onVerificationFailed(RegisterLoginActivity.kt:49)
        at com.google.firebase.auth.api.internal.zzet.zza(Unknown Source)
        at com.google.firebase.auth.api.internal.zzes.run(Unknown Source)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:168)
        at android.app.ActivityThread.main(ActivityThread.java:5885)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)

0 个答案:

没有答案