当我使用电话提供商验证具有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
}
}
当我从Auth.auth()获取时,firUser是当前用户.currentUser
答案 0 :(得分:0)
userInfo.phoneNumber
不存在,您需要检查:userInfo.uid
或firUser.phoneNumber
答案 1 :(得分:0)
我也面临着类似的情况,即当用户登录时填充UserInfo中的phoneNumber属性,但在应用程序重新启动时,它是零。要回答您的具体问题,是的,这是一个错误。
在17年6月,Firebase“Phone Auth用户表现不如预期#67”有一个未解决的问题#67。它现在已关闭,但由于我仍然看到相同的问题,所以我假设它没有修复。 https://github.com/firebase/firebase-ios-sdk/issues/67
其中一个贡献者提供了另一种解决方案,它是从provideData对象获取的 让phoneNumber = Auth.auth()。currentUser!.providerData.first!.phoneNumber!
以上代码假设只有一个提供商链接到用户。