重启后用户 phoneNumber 属性为零

Posted

技术标签:

【中文标题】重启后用户 phoneNumber 属性为零【英文标题】:Users phoneNumber property is nil after restart 【发布时间】:2017-06-20 09:23:13 【问题描述】:

当我使用电话提供商通过 firebase-auth 验证用户时,在验证成功后,当前用户的属性 phoneNumber 填充了已验证的号码。

但是,在应用重新启动后,该属性保持为空。我仍然可以通过 providerData 属性获取电话号码,但我想知道为什么不再归档 phoneNumber 属性。

这是一个错误还是我遗漏了什么?

代码示例:

var phoneNumber: String? 
    get 
        guard let firUser = firUser else  return nil 
        var phoneNumber: String? = firUser.phoneNumber //filled after verification, but empty after restart
        if phoneNumber == nil 
            for userInfo in firUser.providerData 
                if userInfo.providerID == "phone" 
                    phoneNumber = userInfo.phoneNumber //always filled
                
            
        
        return phoneNumber
    

firUser 是我从 Auth.auth().currentUser 获得的当前用户

【问题讨论】:

显示一些您尝试从 firebase 获取属性 phoneNumber 的代码。 我添加了一个实际运行良好的代码示例。只是这种行为对我来说很奇怪。 【参考方案1】:

userInfo.phoneNumber 不存在,您需要检查:userInfo.uidfirUser.phoneNumber

【讨论】:

当然存在 (firebase.google.com/docs/reference/ios/firebaseauth/api/…),而且工作正常。我的意思是,fireUser.phoneNumber 没有按我的预期工作。另外我只是注意到文档中没有提到这个字段 (firebase.google.com/docs/reference/ios/firebaseauth/api/…)【参考方案2】:

我也面临类似的情况,用户登录时会填充 UserInfo 中的 phoneNumber 属性,但在应用重新启动时它为 nil。要回答您的具体问题,是的,这是一个错误。

在 17 年 6 月,Firebase 存在一个未解决的问题 #67“电话身份验证用户的行为不符合预期 #67”。它现在已关闭,但由于我仍然看到相同的问题,所以我假设它没有修复。 https://github.com/firebase/firebase-ios-sdk/issues/67

其中一位贡献者提供了另一种解决方案,即从 provideData 对象中获取 让 phoneNumber = Auth.auth().currentUser!.providerData.first!.phoneNumber!

以上代码假设只有一个提供者链接到用户。

【讨论】:

以上是关于重启后用户 phoneNumber 属性为零的主要内容,如果未能解决你的问题,请参考以下文章

执行获取对象的获取请求属性后为零

单元测试(Kiwi):调用 loadView 和 viewDidLoad 后,测试中的属性始终为零

TSQL - 使用 UNPIVOT 的帮助

无法使用 - auth/user.phonenumbers.read 范围从用户的谷歌个人资料中读取电话号码

重启后,MSSQLSERVER服务无法启动

升级win10后电脑经常自动重启的问题