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

Unity Android端Firebase手机号认证报错:创建PhoneAuthOptions失败

Unity Firebase手机号认证报错:VerifyPhoneNumber: builder faild to create PhoneAuhtOptions

我正尝试在Android平台上通过Unity实现Firebase手机号认证,使用的代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Firebase.Auth;

public class AuthClient : MonoBehaviour
{
    void Start()
    {
        var text = FindObjectOfType<Text>();

        Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
        {
            Firebase.DependencyStatus dependencyStatus = task.Result;
            if (dependencyStatus == Firebase.DependencyStatus.Available)
            {
                Firebase.FirebaseApp app = Firebase.FirebaseApp.DefaultInstance;
                PhoneAuthProvider provider = PhoneAuthProvider.GetInstance(FirebaseAuth.DefaultInstance);

                try
                {
                    var provOption = new PhoneAuthOptions
                    {
                        PhoneNumber = [Phone number example],
                        TimeoutInMilliseconds = 100 * 1000,
                        ForceResendingToken = null,
                    };

                    provider.VerifyPhoneNumber
                    (
                        provOption,
                        verificationCompleted: (credential) =>
                        {
                            // Some codes
                        },
                        verificationFailed: (error) =>
                        {
                            // Some codes
                        },
                        codeSent: (id, token) =>
                        {
                            // Some Codes
                        },
                        codeAutoRetrievalTimeOut: (id) =>
                        {
                            // Some codes
                        }
                    );
                }
                catch (System.Exception e)
                {
                    text.text = e.Message;
                }
            }
            else
            {
                Debug.Log("An error occurred while checking dependencies. ");
            }
        });
    }
}

运行时抛出如下错误(注:错误信息存在拼写错误):

VerifyPhoneNumber: builder faild to create PhoneAuhtOptions

我在Stack Overflow上找到类似问题《Unity C#中报错:"Builder failed to create phone auth options"》,但未找到解决方案。请问该错误的原因是什么,如何解决?


错误原因及解决方案

  • 手机号格式不符合要求
    PhoneNumber必须使用E.164标准格式,即带国家区号的完整号码(如+8613800138000),不能省略+号或只填纯手机号。代码中[Phone number example]需替换为符合格式的真实号码。

  • PhoneAuthOptions初始化方式错误
    Unity的Firebase SDK中,PhoneAuthOptions必须通过Builder模式创建,直接用对象初始化器会导致参数未正确传递,引发构建失败。修正后的初始化代码:

    var provOption = new PhoneAuthOptions.Builder(FirebaseAuth.DefaultInstance)
        .SetPhoneNumber("+8613800138000") // 替换为标准格式手机号
        .SetTimeout(100 * 1000)
        .SetForceResendingToken(null)
        .Build();
    
  • Firebase配置或依赖问题

    • 确认Firebase控制台已启用手机号认证功能,且Android项目配置了正确的SHA-1指纹;
    • 检查google-services.json文件已放置在Assets/Plugins/Android目录下;
    • 确保导入的Firebase Auth SDK版本与Unity、Android项目兼容。
  • 线程切换问题
    ContinueWith默认在后台线程执行,若后续涉及UI操作(如修改text.text),需切换到Unity主线程,可使用ContinueWithOnMainThread(需导入Firebase.Extensions命名空间):

    using Firebase.Extensions;
    
    Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task =>
    {
        // 原逻辑代码
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:17:16