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

Unity中FirebaseAuth调用VerifyPhoneNumber报错:无法验证给定手机号

Unity Firebase Auth 手机号登录报错排查方案

针对调用VerifyPhoneNumber返回Unable to verify the given phone number且测试手机号无法触发回调的问题,按以下步骤逐一排查:

1. Firebase 控制台配置检查

  • 确认Phone Auth 已启用:进入控制台「Authentication」→「Sign-in method」,找到「Phone」并确保状态为「启用」,测试阶段不要设置号码白名单或限制条件。
  • 添加官方测试号码:在「Phone」设置的「Test phone numbers」区域,添加Firebase官方提供的测试号(如+16505551234)及对应验证码(如123456),添加后使用该号码测试可跳过真实短信通道,直接触发回调。
  • 更新配置文件:重新下载google-services.json(Android)或GoogleService-Info.plist(iOS),替换Unity项目中Assets/Plugins/Android或Assets/Plugins/iOS下的旧文件,确保配置与控制台一致。

2. 手机号格式校验

  • 必须携带国际区号:例如中国手机号需写为+86138xxxxxxx,不能省略区号直接写138xxxxxxx,Firebase不识别无区号的号码。
  • 测试号严格遵循官方格式:使用控制台添加的测试号时,要完全匹配输入(包括+号和空格/连字符,如+1 650-555-1234)。

3. Unity 项目与SDK配置

  • 匹配SDK与Unity版本:使用兼容的Firebase Auth SDK(建议最新稳定版,如12.x系列),Unity版本需在2020.x及以上,避免版本不兼容导致的初始化错误。
  • Android 权限检查:确认Assets/Plugins/Android/AndroidManifest.xml中包含Firebase自动添加的权限:
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    
    同时确保存在处理验证短信的intent-filter,若手动修改过Manifest需恢复自动生成的配置。
  • iOS Info.plist 检查:确认项目Bundle ID与Firebase控制台注册的一致,无需额外配置ATS(Firebase使用HTTPS),但需确保设备网络正常。

4. 代码逻辑修正

  • 确保Firebase初始化完成:调用VerifyPhoneNumber前,必须等待FirebaseApp.CheckAndFixDependenciesAsync()执行完成,示例:
    async void Start()
    {
        var dependencyStatus = await FirebaseApp.CheckAndFixDependenciesAsync();
        if (dependencyStatus == DependencyStatus.Available)
        {
            // 初始化完成后再调用手机号验证
            StartPhoneVerification("+86138xxxxxxx");
        }
        else
        {
            Debug.LogError("Firebase依赖初始化失败: " + dependencyStatus);
        }
    }
    
  • 完整绑定回调并打印详细错误:必须实现所有回调,尤其是verificationFailed要打印错误详情,而非仅返回的提示字符串:
    void StartPhoneVerification(string phoneNumber)
    {
        FirebaseAuth.DefaultInstance.VerifyPhoneNumber(phoneNumber, 60, null,
            verificationCompleted: (credential) =>
            {
                Debug.Log("自动验证完成,凭证: " + credential);
            },
            codeSent: (verificationId, forceResendingToken) =>
            {
                Debug.Log("验证码已发送,验证ID: " + verificationId);
                // 保存verificationId用于后续验证
            },
            codeAutoRetrievalTimeOut: (verificationId) =>
            {
                Debug.Log("验证码自动获取超时,验证ID: " + verificationId);
            },
            verificationFailed: (error) =>
            {
                // 打印详细错误信息,定位问题根源
                Debug.LogError("验证失败: " + error.Message + " | 错误码: " + error.ErrorCode);
            });
    }
    

5. 网络与环境排查

  • 使用真机测试:避免依赖模拟器的虚拟网络,部分模拟器可能无法正常连接Firebase服务器。
  • 确保设备网络正常:无代理、防火墙限制,能正常访问Firebase相关域名(无需手动添加例外,SDK已处理)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:25:45