📜  在Android中使用Firebase进行电话号码验证

📅  最后修改于: 2021-05-10 17:06:53             🧑  作者: Mango

电话号码Firebase身份验证用于通过向用户的手机发送SMS消息来登录用户。用户使用SMS消息中包含的一次性代码登录。下面提供了一个示例视频,以使您对我们在本文中将要做的事情有个大概的了解。请注意,我们将使用Kotlin语言实施此项目。

分步实施

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Kotlin作为编程语言。

第2步:将Project连接到Firebase。

步骤3:将依存关系添加到build.gradle文件,然后单击“立即同步”

步骤4:创建两个新活动。

创建两个新活动。一个PhoneNumberActivity.kt及其布局文件activity_phone_number.xml,用于输入电话号码并启动身份验证过程。第二个OtpActivity.kt,带有用于输入从Firebase接收的OTP的布局文件activity_otp.xml。

步骤5:使用布局

使用activity_phone_number.xml 。转到activity_phone_number.xml文件,并编写以下代码。

XML


  
    
    
      
      
    


XML


  
    
      
      
    
  
    
    


XML


  
    
  


Kotlin
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import com.google.firebase.FirebaseException
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.PhoneAuthCredential
import com.google.firebase.auth.PhoneAuthOptions
import com.google.firebase.auth.PhoneAuthProvider
import java.util.concurrent.TimeUnit
  
class PhoneNumberActivity : AppCompatActivity() {
    
    // this stores the phone number of the user
    var number : String =""
    
    // create instance of firebase auth
    lateinit var auth: FirebaseAuth
    
      // we will use this to match the sent otp from firebase
    lateinit var storedVerificationId:String
    lateinit var resendToken: PhoneAuthProvider.ForceResendingToken
    private lateinit var callbacks: PhoneAuthProvider.OnVerificationStateChangedCallbacks
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_phone_number)
  
        auth=FirebaseAuth.getInstance()
  
        // start verification on click of the button
        findViewById


Kotlin
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.FirebaseAuthInvalidCredentialsException
import com.google.firebase.auth.PhoneAuthCredential
import com.google.firebase.auth.PhoneAuthProvider
  
class OtpActivity : AppCompatActivity() {
    
    // get reference of the firebase auth
    lateinit var auth: FirebaseAuth
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_otp)
  
        auth=FirebaseAuth.getInstance()
  
        // get storedVerificationId from the intent
        val storedVerificationId= intent.getStringExtra("storedVerificationId")
  
        // fill otp and call the on click on button
        findViewById


XML


  
    
  
    
        
        
            
                
  
                
            
  
        
        
  
        
    
  


使用activity_otp.xml。转到activity_otp.xml文件,并编写以下代码。

XML格式



  
    
      
      
    
  
    
    

使用activity_main.xml 。转到activity_main.xml文件,并编写以下代码。这是验证完成后我们要完成的最后一项活动。

XML格式



  
    
  

步骤6:使用PhoneNumberActivity.kt文件

转到PhoneNumberActivity.kt文件,并参考以下代码。下面是PhoneNumberActivity.kt文件的代码。在代码内部添加了注释,以更详细地了解代码。

科特林

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import com.google.firebase.FirebaseException
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.PhoneAuthCredential
import com.google.firebase.auth.PhoneAuthOptions
import com.google.firebase.auth.PhoneAuthProvider
import java.util.concurrent.TimeUnit
  
class PhoneNumberActivity : AppCompatActivity() {
    
    // this stores the phone number of the user
    var number : String =""
    
    // create instance of firebase auth
    lateinit var auth: FirebaseAuth
    
      // we will use this to match the sent otp from firebase
    lateinit var storedVerificationId:String
    lateinit var resendToken: PhoneAuthProvider.ForceResendingToken
    private lateinit var callbacks: PhoneAuthProvider.OnVerificationStateChangedCallbacks
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_phone_number)
  
        auth=FirebaseAuth.getInstance()
  
        // start verification on click of the button
        findViewById

步骤7:使用OtpActivity.kt文件

转到OtpActivity.kt文件,并参考以下代码。下面是OtpActivity.kt文件的代码。在代码内部添加了注释,以更详细地了解代码。

科特林

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.FirebaseAuthInvalidCredentialsException
import com.google.firebase.auth.PhoneAuthCredential
import com.google.firebase.auth.PhoneAuthProvider
  
class OtpActivity : AppCompatActivity() {
    
    // get reference of the firebase auth
    lateinit var auth: FirebaseAuth
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_otp)
  
        auth=FirebaseAuth.getInstance()
  
        // get storedVerificationId from the intent
        val storedVerificationId= intent.getStringExtra("storedVerificationId")
  
        // fill otp and call the on click on button
        findViewById

步骤8:转到AndroidManifest.xml并添加以下代码

XML格式



  
    
  
    
        
        
            
                
  
                
            
  
        
        
  
        
    
  

步骤9:为您的项目启用Android DeviceCheck API

在Google Cloud Console中,为您的项目启用Android DeviceCheck API。将使用默认的Firebase API密钥,并且需要允许其访问DeviceCheck API。

步骤10:将SHA键从Android Studio添加到Firebase

从您的项目中复制SHA1SHA-256密钥,然后将其粘贴到Firebase控制台。以下是指导您的屏幕截图。

Firebase控制台上,转到“项目概述”->“项目设置”,然后单击“添加指纹”按钮,然后添加从firebase复制的SHA密钥

第11步:为Firebase项目启用电话号码登录

在Firebase控制台中,选择您的项目,打开“身份验证”部分。在“登录方法”页面上,启用“电话号码”登录方法。

输出:

Github仓库在这里

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!