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
相关产品推荐
相关产品推荐

