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 凭据。
这是一个示例(不要忘记导入 FBSDKLoginKit
和 FirebaseAuth
库):
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 后显示用户数据