【问题标题】:issue switching FB users in FBSDK in Swift在 Swift 的 FBSDK 中切换 FB 用户的问题
【发布时间】:2026-01-04 05:15:01
【问题描述】:

我有一个应用程序,它在应用程序内使用 FB 登录来收集用户的 FB id,我用它来创建指向他们的 FB 页面的链接,如下所示:

    @IBAction func saveFacebookDidTap(_ sender: Any) {
    if sharingFacebook == false {
        if  FBSDKAccessToken.current() == nil {
            print("no token")
        }
            login.logIn(withReadPermissions: ["public_profile"], handler: { (result, error) -> Void in

            if error == nil && !(result?.isCancelled)! {
                let fbloginresult : FBSDKLoginManagerLoginResult = result!

                if fbloginresult.grantedPermissions.contains("public_profile") {
                    print("success")
                    let parameters = ["fields" : "id"]

                    if FBSDKAccessToken.current() != nil {

                        self.facebookButton.setTitle("Remove Facebook from your Profile", for: [])
                        self.sharingFacebook = true
                    FBSDKGraphRequest(graphPath: "me", parameters: parameters).start { (connection, result, error) -> Void in

                        if error != nil {
                            return
                        }

                        let data:[String:AnyObject] = result as! [String : AnyObject]

                        if let id = data["id"] as? NSString{

    //do stuf with the id

我也允许用户像这样删除这个 FB 链接:

    else {
        self.sharingFacebook = false
        self.facebookButton.setTitle("Add Facebook to your Profile", for: [])

        FBSDKLoginManager().logOut()

    }

我在使用 FB 登录页面时遇到问题。当用户点击添加他们的 FB 时,我看到一个页面显示“您之前使用 Facebook 登录到“应用名称”。您要继续吗?”我没有看到让我输入电子邮件和密码的字段。有什么我可能会遗漏的想法吗?

【问题讨论】:

    标签: swift facebook facebook-graph-api


    【解决方案1】:

    我遇到了类似的问题。原因在这里解释:How to completely Logout of Facebook SDK Auth in iOS App

    我可以通过设置登录行为来解决这个问题,即

    LoginManager.setLoginBehavior('web');
    

    在开始登录之前。

    【讨论】:

    • 新语法是fbLoginManager.loginBehavior = .web
    • @StephanePaquet 解决了这个问题,通过提示他们每次登录尝试为 FB 用户/通行证空白...为什么很难让它填充字段并让用户在需要时进行编辑.我不喜欢任何一个选项。
    • 我刚刚测试了 Dribble,他们的 Facebook 登录完全被破坏了。测试了 Pinterest,它与 OP 有相同的问题。如果我必须在 3 个问题之间进行选择,请选择 OP 发布并在 pintrest 中看到的初始问题。
    • 重新发送 Facebook sdk 仅支持通过浏览器。我认为在 Iphone 设置中清除 Safari 历史记录是唯一的方法。
    【解决方案2】:

    我在 Safari 缓存 Facebook 登录凭据时遇到了这个问题。转到设置...Safari ...清除历史记录和数据。解决了。

    【讨论】:

    • 有效,但不能推广,因为用户永远不会这样做。
    • 是的。作为开发人员,这对我来说是一个测试问题,而不是最终用户的生产问题。
    【解决方案3】:

    可以通过设置不同的LoginBehavior来处理

    让 loginManager = LoginManager()

    loginManager.loginBehavior = .web

    .native

    :可以使用原生 Facebook 应用登录。

    .浏览器

    :尝试通过 Safari.app 或SFSafariViewController(如果可用)登录。

    .systemAccount

    :尝试通过当前通过设备设置登录的 Facebook 帐户登录。

    .web

    :尝试通过模式WebView 弹出登录。

    【讨论】: