如何在firebase中访问用户的facebook公共信息?
问题描述:
我已经申请并获得批准public_profile
和email
为我的应用程序。如何在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。
我错过了什么?
这真的很奇怪,有没有办法以不同的方式实现这一点?如何在没有这些信息的情况下创建配置文件? – Houman
据我所知,你只是使用Facebook作为用户电子邮件的认证。如果您有基于密码的帐户登录,则用户必须验证其电子邮件。 Facebook是用户电子邮件的可信验证。您并未在Firebase中创建“Facebook”用户。 –
对不起,我想我没有正确解释。我之前创建了用于Web应用程序的Facebook登录,并且在首次注册时,我能够获取用户的公共信息并将其作为基础配置文件存储在Web应用程序中。如果我想在此实现此目的,理想情况下,我应该在注册后立即获得此信息,当用户授予了火力点认证权限时。您的意思是这不能通过Firebase身份验证完成,但是我可以通过facebook库单独执行此操作,而无需再次请求权限吗?谢谢 – Houman