Facebook 登录用户数据未显示在 Firebase 控制台中

Posted

技术标签:

【中文标题】Facebook 登录用户数据未显示在 Firebase 控制台中【英文标题】:Facebook login user data not displaying in firebase console 【发布时间】:2016-03-15 08:08:49 【问题描述】:

我已经使用 firebase 在我的应用中实现了电子邮件和 Facebook 登录。我的代码如下:

FB登录:

FireBaseHelper.fireBaseHelper.BASE_REF.authWithOAuthProvider("facebook", token: "123")  (error, data) -> Void in

        APP_DELEGATE.hideActivityIndicator()
        if error != nil 
            print(error)
            self.loginErrorAlert("Oops!", message: "Check your username and password.")
         else 

            // Be sure the correct uid is stored.

            NSUserDefaults.standardUserDefaults().setValue(data.uid, forKey: "uid")

            // Enter the app!

            self.performSegueWithIdentifier("CurrentlyLoggedIn", sender: nil)
        
    

电子邮件注册:

     let username = usernameField.text
    let email = emailField.text
    let password = passwordField.text

    if username != "" && email != "" && password != "" 

        APP_DELEGATE.showActivityIndicator()

        FireBaseHelper.fireBaseHelper.BASE_REF.createUser(email, password: password, withValueCompletionBlock:  error, result in



            if error != nil 
                 APP_DELEGATE.hideActivityIndicator()
                // There was a problem.
                self.signupErrorAlert("Oops!", message: "Having some trouble creating your account. Try again.")

             else 

                // Create and Login the New User with authUser
                FireBaseHelper.fireBaseHelper.BASE_REF.authUser(email, password: password, withCompletionBlock: 
                    err, authData in

                    let user = ["provider": authData.provider!, "email": email!, "username": username!]

                      FireBaseHelper.fireBaseHelper.USER_REF.childByAppendingPath(authData.uid).setValue(user, withCompletionBlock:  (error, firebase) -> Void in

                        if error != nil 
                             APP_DELEGATE.hideActivityIndicator()
                            self.signupErrorAlert("Oops!", message: "Having some trouble creating your account. Try again.")

                        else
                        
                             APP_DELEGATE.hideActivityIndicator()
                            // Store the uid for future access - handy!
                            NSUserDefaults.standardUserDefaults().setValue(result ["uid"], forKey: "uid")

                            // Enter the app.
                            self.performSegueWithIdentifier("NewUserLoggedIn", sender: nil)

                        
                      )
                )
           
        )

    else
    
        signupErrorAlert("Oops!", message: "Don't forget to enter your email, password, and a username.")
    

以及辅助类代码:

class FireBaseHelper: NSObject 

    static let fireBaseHelper = FireBaseHelper()

    private var _BASE_REF = Firebase(url: "https://poc-demoApp.firebaseio.com")
    private var _USER_REF = Firebase(url: "https://poc-demoApp.firebaseio.com/users")
 var BASE_REF: Firebase 
        return _BASE_REF
    

    var USER_REF: Firebase 
        return _USER_REF
    

 var CURRENT_USER_REF: Firebase 
        let userID = NSUserDefaults.standardUserDefaults().valueForKey("uid") as! String

        let currentUser = Firebase(url: "\(BASE_REF)").childByAppendingPath("users").childByAppendingPath(userID)

        return currentUser!
    

问题是当我使用电子邮件用户注册时,我可以在 firebase 的仪表板上看到用户数据,而当我使用 fb 注册时,该用户的数据没有显示在仪表板上,请告诉我有什么问题。有什么我想念的吗?显示fb注册成功

【问题讨论】:

【参考方案1】:

Firebase 仅存储电子邮件+密码用户的列表。它不会存储与社交提供商(例如 Facebook)签署的应用程序用户的任何数据。因此,对于这些用户,Firebase 信息中心上没有任何内容可显示。

如果您想在数据库中存储有关 Facebook 用户的信息,请参阅storing user data 部分。

【讨论】:

你确定吗?我一直无法收到电子邮件和其他东西。【参考方案2】:

我遇到了同样的问题,我发现在用户成功登录 Facebook 后,您需要获取用于登录使用的访问令牌,将其交换为 Firebase 凭据,最后使用 Firebase 进行身份验证Firebase 凭据。

这是一个示例(不要忘记导入 FBSDKLoginKitFirebaseAuth 库):

let credential = FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString)

Auth.auth().signIn(with: credential)  (user, error) in
      if let error = error 
        print("Facebook authentication with Firebase error: ", error)
        return
      
      print("User signed in!") // After this line the Facebook login should appear on your Firebase console
    

这是 Facebook 登录后控制台的屏幕截图:

【讨论】:

以上是关于Facebook 登录用户数据未显示在 Firebase 控制台中的主要内容,如果未能解决你的问题,请参考以下文章

Facebook 登录按钮未显示在 ActionbarActivity 中

在 Android 中单击 Facebook 登录按钮后未显示 Facebook 身份验证对话框

带有社交元数据的 Firebase 动态链接未在 iMessage 上显示图像(iOS 消息)

如何在使用 redux 登录 facebook/expo 和 firebase 后显示用户数据

使用新的 facebook-ios-sdk 在 iphone 上未显示 Facebook Connect 登录对话框

注销时flutter_facebook_auth插件未清除数据