重置Facebook登录

时间:2017-07-13 16:14:31

标签: swift facebook facebook-login

在我的应用程序中,我现在有一个电子邮件/密码登录。在用户使用此方法登录后,我希望用户能够使用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)
        })
    }
}

如果您需要更多信息,请随时提出要求。提前感谢您抽出宝贵时间帮助我!

1 个答案:

答案 0 :(得分:0)

这是here讨论的SDK中的常见错误。解决方案是使用:

fbLoginManager.loginBehavior = .web