You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio Java开发:PhoneAuthProvider.verifyPhoneNumber方法已弃用该如何处理

解决PhoneAuthProvider.verifyPhoneNumber()方法弃用问题

Firebase Auth已弃用PhoneAuthProvider.getInstance().verifyPhoneNumber()的重载方法,官方推荐使用PhoneAuthOptions结合Builder模式实现电话号码验证,步骤如下:

1. 构建PhoneAuthOptions实例

通过PhoneAuthOptions.newBuilder()配置验证所需参数,包括电话号码、超时时间、关联的Activity/Fragment及回调接口:

Kotlin示例:

import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.PhoneAuthProvider
import java.util.concurrent.TimeUnit

// 获取FirebaseAuth实例
val firebaseAuth = FirebaseAuth.getInstance()

// 构建PhoneAuthOptions
val phoneAuthOptions = PhoneAuthOptions.newBuilder(firebaseAuth)
    .setPhoneNumber("+8613xxxxxxxxx") // 目标电话号码,需带国际区号
    .setTimeout(60L, TimeUnit.SECONDS) // 验证码超时时间
    .setActivity(this) // 绑定当前Activity,用于弹出验证码自动填充弹窗
    .setCallbacks(object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
        override fun onVerificationCompleted(credential: PhoneAuthCredential) {
            // 验证自动完成(如设备已保存号码或运营商自动验证),可直接用credential登录
        }

        override fun onVerificationFailed(e: FirebaseException) {
            // 验证失败处理,比如号码格式错误、网络问题等
        }

        override fun onCodeSent(
            verificationId: String,
            token: PhoneAuthProvider.ForceResendingToken
        ) {
            // 验证码发送成功,保存verificationId和token,用于后续手动输入验证码后的验证
        }
    })
    .build()

Java示例:

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.PhoneAuthProvider;
import java.util.concurrent.TimeUnit;

// 获取FirebaseAuth实例
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();

// 构建PhoneAuthOptions
PhoneAuthOptions phoneAuthOptions = PhoneAuthOptions.newBuilder(firebaseAuth)
        .setPhoneNumber("+8613xxxxxxxxx")
        .setTimeout(60L, TimeUnit.SECONDS)
        .setActivity(this)
        .setCallbacks(new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
            @Override
            public void onVerificationCompleted(@NonNull PhoneAuthCredential credential) {
                // 处理自动验证完成逻辑
            }

            @Override
            public void onVerificationFailed(@NonNull FirebaseException e) {
                // 处理验证失败逻辑
            }

            @Override
            public void onCodeSent(@NonNull String verificationId,
                                   @NonNull PhoneAuthProvider.ForceResendingToken token) {
                // 保存verificationId和token
            }
        })
        .build();

2. 启动电话号码验证流程

调用PhoneAuthProvider.verifyPhoneNumber()方法传入构建好的PhoneAuthOptions实例,替代原来的弃用方法:

Kotlin:

PhoneAuthProvider.verifyPhoneNumber(phoneAuthOptions)

Java:

PhoneAuthProvider.verifyPhoneNumber(phoneAuthOptions);

额外说明

新的Builder模式相比旧方法更灵活,支持更多扩展配置,比如需要重发验证码时,可在PhoneAuthOptions中通过setForceResendingToken()传入之前保存的ForceResendingToken。

内容的提问来源于stack exchange,提问作者Maxwell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 02:35:19