8

我遇到了 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 状态的原因)?

4

8 回答 8

27

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

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [FBSession.activeSession handleOpenURL:url];
}
于 2012-10-03T14:09:12.647 回答
8

我有同样的问题

  1. 我们创建了 facebook 应用程序 (developer.facebook.com) 并设置了我们的 bundle id (ex. com.MyCompany.MyApp)
  2. 当然,使用相同的 bundle id 创建了我们的 iOS 应用程序
  3. 将我们的应用程序交付给客户后,他更改了 bundle id 没有通知我们。

显然他开始出现 FBSessionStateClosedLoginFailed 错误!

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

于 2012-11-23T02:05:09.020 回答
7

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

于 2013-05-24T01:51:53.887 回答
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];
    }
于 2013-02-14T10:35:02.513 回答
2

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

于 2012-08-21T02:17:22.887 回答
1

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

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

于 2012-09-21T00:43:24.643 回答
1

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

状态和评论页面

于 2014-01-08T04:05:19.013 回答
0

出色地。我跟着FBLoginCustomUISample某个地方,它是一个从自身实现登录github.com的工作示例。您还可以在 iOS 应用程序中创建登录功能时阅读我的​​解决方法。这是我的链接:facebookfacebookfacebook

原生 iOS Facebook SSO 不会返回到应用程序

于 2014-01-08T04:55:30.367 回答