Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 重置Facebook登录_Swift_Facebook_Facebook Login - Fatal编程技术网

Swift 重置Facebook登录

Swift 重置Facebook登录,swift,facebook,facebook-login,Swift,Facebook,Facebook Login,从现在起,在我的应用程序中,我有一个电子邮件/密码登录。在用户使用此方法登录后,我希望用户能够使用Facebook登录以访问他们的朋友。目前,我已经在我的应用程序中内置了Facebook登录按钮。我的应用程序是基于用户的,因此有登录/注册。我将用户的数据存储到Firebase中。为了解释我的问题,我将使用person A和person B。假设person A登录到应用程序并使用Facebook登录(让我明确说明Facebook登录在应用程序登录之后)。然后,如果用户B尝试登录,然后使用Face

从现在起,在我的应用程序中,我有一个电子邮件/密码登录。在用户使用此方法登录后,我希望用户能够使用Facebook登录以访问他们的朋友。目前,我已经在我的应用程序中内置了Facebook登录按钮。我的应用程序是基于用户的,因此有登录/注册。我将用户的数据存储到Firebase中。为了解释我的问题,我将使用person A和person B。假设person A登录到应用程序并使用Facebook登录(让我明确说明Facebook登录在应用程序登录之后)。然后,如果用户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)
        })
    }
}

如果您需要更多信息,请随时询问。提前感谢您抽出时间来帮助我

这是SDK中的一个常见错误,在其他地方也有讨论。解决方案是使用:

fbLoginManager.loginBehavior=.web