【问题标题】:Can't get email from authenticated user with Facebook无法通过 Facebook 收到经过身份验证的用户的电子邮件
【发布时间】:2016-10-15 14:40:15
【问题描述】:

我正在使用 Firebase 的 Facebook 登录来验证我的用户。我不得不将我的项目升级到 Firebase 3.x,因此我不得不改变这一点。例如,我用user!.displayName 获得了“全名”,用user!.photoUrl 获得了“photoUrl”;但即使设置了“电子邮件”范围,也无法使用 user!.email 访问电子邮件。

@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
            }
        })
    }

我很确定这封电子邮件是有效的,因为在我升级到 Firebase 3.x 之前,它可以很好地获取电子邮件。我也尝试了多个 Facebook 帐户,但没有运气。可能是什么问题?

【问题讨论】:

    标签: swift facebook facebook-graph-api firebase firebase-authentication


    【解决方案1】:

    从以前版本的 Firebase Auth 迁移到 Firebase Auth 3.x 时会发生这种情况。它与在以前的版本中能够使用相同的电子邮件地址创建多个帐户有关。有关更多信息,请查看相关的issue

    要修复它,您需要在 Firebase 控制台的 Auth 部分中Prevent creation of multiple accounts with the same email address

    这是一个屏幕截图,显示了 Firebase 控制台中的选项。

    【讨论】:

    • 没有问题!编码愉快!
    猜你喜欢
    • 2021-12-28
    • 2014-01-25
    • 1970-01-01
    • 2022-08-07
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    相关资源
    最近更新 更多