重启后用户 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.uid
或 firUser.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 后,测试中的属性始终为零