xcode 项目总是获得 facebook 登录失败状态

Posted

技术标签:

【中文标题】xcode 项目总是获得 facebook 登录失败状态【英文标题】:xcode project always gets facebook login fail status 【发布时间】:2012-08-20 23:40:31 【问题描述】:

我遇到了 Facebook 登录问题。我安装了 FB SDK 3.0 并且示例项目似乎运行良好 --- 不过不太确定。当我在自己的项目中创建一个按钮并尝试登录 Facebook 时,我总是从 sessionStateChanged 方法中得到 FBSessionStateClosedLoginFailed,尽管我显然得到了页面“你已经授权了这个应用程序。按 Okay 继续”。我还尝试通过 Simulator Safari facebook 页面注销,然后重新启动我的项目,我得到了新的用户名/密码页面,然后我登录了,但我仍然得到 FBSessionStateClosedLoginFailed!

还有一些观察。 1,我通过 NSLog 得到 FBSessionStateClosedLoginFailed,在我点击 Facebook 页面上的 Okay 按钮后立即出现日志“你已经授权了这个应用程序。 2、我试过清理xcode项目缓存,但没有帮助。

有点沮丧。我想知道你们中是否有人可以帮助解决这个问题。赞赏! -托尼

补充: 我做了更多的研究,我发现我所遇到的问题可能是一个典型的问题,正如 Facebook 在这里强调的那样(“专业提示 3:完成所有 ios 应用程序设置”页面 http://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/ 中的部分)。 iPhone上有一个大红叉的图像正是我所拥有的。在 xcode 项目中,我单击我的登录按钮,然后我被定向到此页面,每次我必须单击此页面上的“Okay”(让我称之为 Okay_page)返回到我在模拟器中的应用程序,但是登录状态为 FBSessionStateClosedLoginFailed。我检查了捆绑ID,我正确无误。我还没有“YOUR_IPHONE_APP_STORE_ID”,我相信我需要向 Apple 付费才能获得,我会稍后再做,但在我仍在努力的时候不会。

现在有几个问题: 1,我必须有 YOUR_IPHONE_APP_STORE_ID 才能跳过这个 Okay_page 吗? 2,这(不会从这个 Okay_page 自动重定向回我的应用程序)是否与我在此 Okay_page 中手动单击 Okay 并在模拟器中返回我的应用程序时总是获得 FBSessionStateClosedLoginFailed 的登录状态有关?换句话说,是(我必须手动单击“确定”才能在模拟器中返回我的应用程序)(我得到 FBSessionStateClosedLoginFailed 状态的原因)?

【问题讨论】:

你是怎么解决这个问题的 我遇到了同样的问题,我解决了。检查我的答案 【参考方案1】:

你在AppDelegate中设置了这个功能吗?

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
    return [FBSession.activeSession handleOpenURL:url];

【讨论】:

每次整合 Facebook 时都会怀念这一点。不过是第一次使用新的 SDK。 感谢您提供信息 :)【参考方案2】:

我遇到了同样的问题

    我们创建了 facebook 应用程序 (developer.facebook.com) 设置我们的 捆绑包 ID(例如 com.MyCompany.MyApp) 当然,使用相同的包 ID 创建了我们的 iOS 应用 在将我们的应用交付给客户端后,他更改了 bundle id 无需通知我们。

显然他开始出现 FBSessionStateClosedLoginFailed 错误!

因此,您的 iOS 项目和 Facebook 应用程序之间可能有不同的 bundle id。

【讨论】:

【参考方案3】:

我遇到了这个错误,很长一段时间都无法解决。事实证明,如果您在设置中使用本机 iOS Facebook 帐户并选择“否”以允许该应用程序使用 Facebook,则该应用程序被操作系统阻止。您将始终收到 FBSessionStateClosedLoginFailed 错误,并且您无法在代码中执行任何操作来解决此问题(99% 肯定)。您能做的最好的事情就是提醒用户检查设置。

【讨论】:

【参考方案4】:

我在下面给出的方法中输入了错误的行。 self.session 为零

return [self.session handleOpenURL:url];

应该是

return  [[FBSession activeSession] handleOpenURL:url];

使用以下方法。

- (BOOL)application:(UIApplication *)application
                openURL:(NSURL *)url
      sourceApplication:(NSString *)sourceApplication
             annotation:(id)annotation 
        // attempt to extract a token from the url
      return  [[FBSession activeSession] handleOpenURL:url];
        // return [self.session handleOpenURL:url];
    

【讨论】:

谢谢你的回答,我有一个通用应用程序可以在 iphone 上运行,但不能在 ipad 上运行,这就是原因。我无法解释为什么在 ipad 上会话为零。【参考方案5】:

我在重置模拟器后解决了这个问题。 iOS Simulator - Reset Content and Settings...,希望对您有所帮助。

【讨论】:

谢谢,但我对您的建议不满意。在我点击登录按钮后,我仍然看到失败状态(然后我进入“你已经授权...”页面,)并且在我点击已经授权页面上的确定之后。换句话说,我可以登录,但是状态是 FBSessionStateClosedLoginFailed。【参考方案6】:

我遇到了这个问题,因为我在 applicationDidEnterBackground: 应用委托回调中调用了 [FBSession.activeSession close]。这关闭了会话,因此当重定向使应用程序重新打开会话时,它失败了,因为它已被置于关闭状态。

确保在进入 Okay 页面之前没有在任何地方关闭会话。

【讨论】:

【参考方案7】:

访问 Facebook.com。在左侧面板上打开您的应用程序 -> 状态和审查 -> 有一个带有文本“您想让这个应用程序及其所有实时功能对公众可用吗?”的切换。打开它

【讨论】:

【参考方案8】:

好吧。我在github.com 某处关注FBLoginCustomUISample,这是facebook 本身的facebook 登录实现的工作示例。您还可以在 iOS 应用程序中创建 facebook 登录功能时阅读我的​​解决方法。这是我的链接:

Native iOS Facebook SSO won't return to app

【讨论】:

以上是关于xcode 项目总是获得 facebook 登录失败状态的主要内容,如果未能解决你的问题,请参考以下文章

Facebook 和 Google 登录 - 冲突 (Xcode)

将 Facebook 登录与 Parse 集成

.gitignore 用于 Xcode 项目

Xcode 9 没有这样的模块“Facebook 登录”

Facebook 登录错误 - Xcode 8 GM

Xcode facebook登录错误已关闭