【问题标题】:How to access the user's facebook public information in firebase?如何在firebase中访问用户的facebook公共信息?
【发布时间】:2017-04-27 07:57:07
【问题描述】:

我为我的应用申请并获得了public_profileemail 的批准。

点击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 和 email。

正如here 解释的那样,我没有从 public_profile 中看到性别或其他任何内容。

请问我错过了什么?

【问题讨论】:

    标签: javascript firebase firebase-authentication facebook-login


    【解决方案1】:

    根据documentation,这些是您可以访问的唯一用户属性:

    类似于User object 属性:

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

    【讨论】:

    • 这真的很奇怪,没有办法用不同的方法来实现吗?没有这些信息怎么创建个人资料?
    • 据我所知,您只是使用 Facebook 作为用户电子邮件的身份验证。如果您使用基于密码的帐户登录,则用户必须验证他们的电子邮件。 Facebook 是用户电子邮件的可信身份验证。您不是在 Firebase 中创建“Facebook”用户。
    • 对不起,我想我没有正确解释。我之前为 Web 应用程序创建了 facebook 登录,在第一次注册时,我能够获取用户的公共信息并将其作为基本配置文件存储在 Web 应用程序中。如果我想在这里实现这一点,理想情况下,我应该在注册后当用户授予 firebase 身份验证权限时立即获取此信息。您的意思是这不能通过 Firebase 身份验证来完成,但我可以通过 facebook 库单独执行此操作而无需再次请求权限吗?谢谢
    • 据我所知,这里您只是在使用 Facebook 进行 Firebase 身份验证。身份验证后,您的应用可以访问我的答案中显示的属性。我已经有一段时间没有使用 Facebook 库了,但我认为您必须再次请求权限,因为您需要访问 Facebook 用户属性不是 Firebase 用户属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多