在我的应用程序中,我现在有一个电子邮件/密码登录。在用户使用此方法登录后,我希望用户能够使用Facebook登录以访问他们的朋友。目前我已经在我的应用程序中建立了Facebook登录按钮。我的应用程序是基于用户的,因此有登录/注册。我将用户的数据存储到Firebase中。为了解释我的问题,我将使用A人和B人。让我们说人A登录到应用程序并使用Facebook登录(让我明确表示Facebook登录是在app登录)。然后,如果B人尝试登录然后使用Facebook登录,则会说B人已经登录(对于A人的帐户)。如何为每个用户重置Facebook登录信息?
这是我的登录按钮代码
struct UserService {
static func create(_ firUser: FIRUser, username: String, completion: @escaping (User?) -> Void) {
let userAttrs = ["username": username]
let ref = Database.database().reference().child("users").child(firUser.uid)
ref.setValue(userAttrs) { (error, ref) in
if let error = error {
assertionFailure(error.localizedDescription)
return completion(nil)
}
ref.observeSingleEvent(of: .value, with: { (snapshot) in
let user = User(snapshot: snapshot)
completion(user)
})
}
}
static func createFacebookID(_ firUser: FIRUser, facebookID: String, completion: @escaping (User?) -> Void) {
let userAttrs = ["facebookID": facebookID]
let ref = Database.database().reference().child("users").child(firUser.uid).childByAutoId();
ref.setValue(userAttrs) { (error, ref) in
if let error = error {
assertionFailure(error.localizedDescription)
return completion(nil)
}
ref.observeSingleEvent(of: .value, with: { (snapshot) in
let user = User(snapshot: snapshot)
completion(user)
})
}
}
}
这是我在另一个类
中的createFacebookID函数static func createFacebookID(_ firUser: FIRUser, facebookID: String, completion: @escaping (User?) -> Void) {
let userAttrs = ["facebookID": facebookID]
let ref = Database.database().reference().child("users").child(firUser.uid).childByAutoId();
ref.setValue(userAttrs) { (error, ref) in
if let error = error {
assertionFailure(error.localizedDescription)
return completion(nil)
}
ref.observeSingleEvent(of: .value, with: { (snapshot) in
let user = User(snapshot: snapshot)
completion(user)
})
}
}
如果您需要更多信息,请随时提出要求。提前感谢您抽出宝贵时间帮助我!