1

我已经申请并获得批准public_profileemail为我的应用程序。如何在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

我错过了什么?

回答

0

按照documentation这是唯一的用户属性,您可以访问:

enter image description here

这类似于User object属性:

enter image description here

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

+0

这真的很奇怪,有没有办法以不同的方式实现这一点?如何在没有这些信息的情况下创建配置文件? – Houman

+0

据我所知,你只是使用Facebook作为用户电子邮件的认证。如果您有基于密码的帐户登录,则用户必须验证其电子邮件。 Facebook是用户电子邮件的可信验证。您并未在Firebase中创建“Facebook”用户。 –

+0

对不起,我想我没有正确解释。我之前创建了用于Web应用程序的Facebook登录,并且在首次注册时,我能够获取用户的公共信息并将其作为基础配置文件存储在Web应用程序中。如果我想在此实现此目的,理想情况下,我应该在注册后立即获得此信息,当用户授予了火力点认证权限时。您的意思是这不能通过Firebase身份验证完成,但是我可以通过facebook库单独执行此操作,而无需再次请求权限吗?谢谢 – Houman

相关问题