电话号码Firebase身份验证用于通过向用户的手机发送SMS消息来登录用户。用户使用SMS消息中包含的一次性代码登录。下面提供了一个示例视频,以使您对我们在本文中将要做的事情有个大概的了解。请注意,我们将使用Kotlin语言实施此项目。
Note: To implement this in Java language refer to this article Firebase Authentication with Phone Number OTP in Android
分步实施
步骤1:创建一个新项目
要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Kotlin作为编程语言。
第2步:将Project连接到Firebase。
步骤3:将依存关系添加到build.gradle文件,然后单击“立即同步”
implementation platform(‘com.google.firebase:firebase-bom:26.5.0’)
implementation ‘com.google.firebase:firebase-auth-ktx’
步骤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
从您的项目中复制SHA1和SHA-256密钥,然后将其粘贴到Firebase控制台。以下是指导您的屏幕截图。
Note: Please refer to this article How to Generate SHA1, MD5, and SHA-256 Keys in Android Studio?
在Firebase控制台上,转到“项目概述”->“项目设置”,然后单击“添加指纹”按钮,然后添加从firebase复制的SHA密钥
第11步:为Firebase项目启用电话号码登录
在Firebase控制台中,选择您的项目,打开“身份验证”部分。在“登录方法”页面上,启用“电话号码”登录方法。
输出:
Github仓库在这里。