我正在使用Firebase的Facebook登录来验证我的用户身份。我不得不将我的项目升级到Firebase 3.x,因此我不得不改变这一点。我用user!.displayName
和'photoUrl'获得'fullname',例如user!.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帐户,但没有运气。可能是什么问题?
答案 0 :(得分:2)
从以前版本的Firebase Auth迁移到Firebase Auth 3.x时会发生这种情况。它与能够在先前版本中使用相同电子邮件地址创建多个帐户有关。有关详细信息,请查看相关的issue。
要修复此问题,您需要在Firebase控制台的Auth部分中gulp taskA taskB
:
以下是显示Firebase控制台中该选项的屏幕截图。