Я пытаюсь реализовать аутентификацию телефона с помощью firebase, но я не получаю смс - PullRequest
1 голос
/ 09 июня 2019

Я пытаюсь реализовать метод аутентификации firebase, используя номер телефона, но когда я нажимаю кнопку, чтобы получить код смс, индикатор загрузки просто загружается, и я не получаю смс. Также не создается ни одна учетная запись на консоли Firebase, поскольку я не могу зарегистрировать свою учетную запись, если не введу свой код подтверждения.

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()
    }


}

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>

1 Ответ

0 голосов
/ 10 июня 2019
  1. Убедитесь, что вы включили аутентификацию телефона на консоли Firebase,
  2. Убедитесь, что ваш проект на Android Studio подключен к Firebase, потому что для аутентификации телефона требуется сертификат SHA-1 для отправки смс.Ваша андроид студия будет обрабатывать SHA-1 автоматически.
  3. иногда возникает проблема при подключении FireBase к проекту Android через Android Studio, в этом случае вам следует вручную создать свой собственный SHA-1 для своего проекта.перейдите по этой ссылке SHA-1 отпечаток сертификата хранилища ключей
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...