2017-06-20 50 views
1

當我使用電話提供商驗證具有firebase-auth的用戶時,當驗證成功後,當前用戶的屬性phoneNumber已填充驗證號碼。重新啓動後,用戶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

+0

顯示您嘗試從firebase中獲取屬性phoneNumber的一些代碼。 – PGDev

+0

我添加了一個實際正常工作的代碼示例。這只是我的行爲似乎很奇怪。 –

回答

0

userInfo.phoneNumber不存在,您需要檢查兩種:userInfo.uidfirUser.phoneNumber

+0

當然它存在(https://firebase.google.com/docs/reference/ios/firebaseauth/api/reference/Protocols/FIRUserInfo),它工作正常。 我的觀點是,fireUser.phoneNumber不能按我的預期工作。另外我只注意到這個字段沒有在文檔中提到(https://firebase.google.com/docs/reference/ios/firebaseauth/api/reference/Classes/FIRUser) –

0

我也面臨類似的情況,其中UserInfo中的phoneNumber屬性填充用戶登錄時,但應用程序重新啓動時它是零。回答您的具體問題,是的,這是一個錯誤。

在6月17日,Firebase的「電話驗證用戶沒有像預期的那樣行事#67」,這是一個未解決的問題#67。它現在已經關閉,但由於我仍然看到相同的問題,所以我認爲它不是固定的。 https://github.com/firebase/firebase-ios-sdk/issues/67

存在由貢獻者之一,並提供了一種替代的解決方案,其是從provideData得到它對象 讓phoneNumber的= Auth.auth()。currentUser!.providerData.first!.phoneNumber!

上面的代碼假定只有一個提供者鏈接到用戶。

相關問題