1

我已經申請並獲得批准public_profileemail爲我的應用程序。如何在firebase中訪問用戶的facebook公共信息?

在點擊按鈕login with Facebook我請求這兩個權限:

let fbLoginManager = FBSDKLoginManager() 
fbLoginManager.logIn(withReadPermissions: ["public_profile", "email"], from: self) { (result, error) in 

成功登錄流程後,我得到的地方,用戶認證的一部分。 (也許我這樣做太晚了,但不知道在哪裏,否則我就嘗試訪問個人資料嗎?)

override func viewDidLoad() { 
     super.viewDidLoad() 

     FIRAuth.auth()!.addStateDidChangeListener() { auth, user in 
      if let user = user { 
       FIRDatastore.shared.setUser(user: User(authData: user)) 
       self.performSegue(withIdentifier: self.loginToList, sender: nil) 
      } 
     } 
    } 

user對象,在這種情況下,是類型FIRUser類。這應該包含公共配置文件信息。但是,我僅在authData.providerData [0]

providerID,userID,displayName,photoURL和電子郵件中看到了信息子集。

我沒有看到性別或來自public_profile的任何其他內容,如解釋here

我錯過了什麼?

回答

0

按照documentation這是唯一的用戶屬性,您可以訪問:

enter image description here

這類似於User object屬性:

enter image description here

我猜測,Facebook的身份驗證僅用於電子郵件和密碼驗證。

+0

這真的很奇怪,有沒有辦法以不同的方式實現這一點?如何在沒有這些信息的情況下創建配置文件? – Houman

+0

據我所知,你只是使用Facebook作爲用戶電子郵件的認證。如果您有基於密碼的帳戶登錄,則用戶必須驗證其電子郵件。 Facebook是用戶電子郵件的可信驗證。您並未在Firebase中創建「Facebook」用戶。 –

+0

對不起,我想我沒有正確解釋。我之前創建了用於Web應用程序的Facebook登錄,並且在首次註冊時,我能夠獲取用戶的公共信息並將其作爲基礎配置文件存儲在Web應用程序中。如果我想在此實現此目的,理想情況下,我應該在註冊後立即獲得此信息,當用戶授予了火力點認證權限時。您的意思是這不能通過Firebase身份驗證完成,但是我可以通過facebook庫單獨執行此操作,而無需再次請求權限嗎?謝謝 – Houman

相關問題