1

我正在使用Firebase的Facebook登錄來驗證用戶身份。我不得不將我的項目升級到Firebase 3.x,因此我不得不改變這一點。例如,我通過user!.displayName和'photoUrl'獲得'全名',例如user!.photoUrl;但即使設置了「電子郵件」範圍,也無法使用user!.email訪問電子郵件。無法通過身份驗證的用戶與Facebook接收電子郵件

@IBAction func facebookLoginDidTouch(sender: AnyObject) { 
let facebookLogin = FBSDKLoginManager() 

facebookLogin.logInWithReadPermissions(["public_profile", "email"], fromViewController: self, handler: { 
    (facebookResult, facebookError) -> Void in 
    if facebookError != nil { 
     print("Facebook login failed. Error \(facebookError)") 
    } else if facebookResult.isCancelled { 
     print("Facebook login was cancelled.") 
    } else { 
     let credential = FIRFacebookAuthProvider.credentialWithAccessToken(FBSDKAccessToken.currentAccessToken().tokenString) 

     FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in 
      if error != nil { 
       print("Login failed. \(error)") 
      } else { 
       print("Logged in!") 
       print(user!.displayName) // works 
       print(user!.photoUrl) // works 
       print(user!.email)  // returns nil 
      } 
     }) 
    } 

我敢肯定電子郵件是有效的,因爲它用來獲取電子郵件就好之前我升級到火力地堡3.x的我也嘗試了多個Facebook帳戶,但沒有運氣。可能是什麼問題?

回答

2

從以前版本的Firebase身份驗證遷移到Firebase身份驗證3.x時會發生這種情況。這與能夠在以前的版本中使用相同的電子郵件地址創建多個帳戶有關。欲瞭解更多信息,請看看這個相關的issue

爲了解決這個問題,你需要Prevent creation of multiple accounts with the same email address在火力地堡控制檯的驗證部分:

這裏是表示火力地堡控制檯選項的屏幕截圖。

Console Screenshot.

+0

哇!好地方!非常感謝! – senty

+0

沒有問題!快樂的編碼! – Sparq

+0

這解決了我的問題!謝謝! –

相關問題