Javascript 如何访问用户';firebase中的facebook公共信息?

Javascript 如何访问用户';firebase中的facebook公共信息?,javascript,firebase,firebase-authentication,facebook-login,Javascript,Firebase,Firebase Authentication,Facebook Login,我已为我的应用程序请求并获得了批准的public_profile和email 单击“使用Facebook登录”按钮后,我请求以下两种权限: let fbLoginManager = FBSDKLoginManager() fbLoginManager.logIn(withReadPermissions: ["public_profile", "email"], from: self) { (result, error) in 在成功的登录流之后,我进入到用户进行身份验证的部分。(也许我这么做太

我已为我的应用程序请求并获得了批准的
public_profile
email

单击“使用Facebook登录”按钮后,我请求以下两种权限:

let fbLoginManager = FBSDKLoginManager()
fbLoginManager.logIn(withReadPermissions: ["public_profile", "email"], from: self) { (result, error) in
在成功的登录流之后,我进入到用户进行身份验证的部分。(也许我这么做太晚了,但不确定我还应该在哪里尝试访问配置文件信息?)

在本例中,
user
对象属于FIRUser类类型。这应该包含公共配置文件信息。但是,我在authData.providerData[0]下只看到了信息的一个子集

providerID、用户名、显示名、照片URL和电子邮件

我没有从公共档案中看到性别或其他任何解释

请问我错过了什么

根据以下内容,您只能访问以下用户属性:

与以下属性类似:


我猜Facebook身份验证仅用于电子邮件和密码验证。

这真是奇怪,没有其他方法可以实现这一点?如果没有这些信息,你怎么创建个人资料呢?据我所知,你只是在使用Facebook作为用户电子邮件的身份验证。如果您使用基于密码的帐户登录,则用户必须验证其电子邮件。Facebook是用户电子邮件的可信认证。您没有在Firebase中创建“Facebook”用户。对不起,我想我没有正确解释。我以前为web应用程序创建过facebook登录,在第一次注册时,我能够获取用户的公共信息,并将其存储为web应用程序中的基本配置文件。如果我想在这里实现这一点,理想情况下,我应该在用户授予firebase身份验证权限后立即获得此信息。你的意思是,这不能用Firebase auth完成,但我可以通过facebook libs单独完成,而不需要再次请求权限吗?谢谢据我所知,这里你只是使用Facebook进行Firebase身份验证。身份验证后,您的应用程序可以访问我的答案中显示的属性。我已经有一段时间没有使用Facebook libs了,但我认为您必须再次请求权限,因为您需要访问Facebook用户属性,而不是Firebase用户属性。
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)
            }
        }
    }