用户phoneNumber属性在重启后为零

时间:2017-06-20 09:23:13

标签: ios swift firebase firebase-authentication

当我使用电话提供商验证具有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

2 个答案:

答案 0 :(得分:0)

userInfo.phoneNumber不存在,您需要检查:userInfo.uidfirUser.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!

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