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

时间:2012-08-20 23:40:32

标签: xcode facebook login

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

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

有点沮丧。我想知道你们中是否有人可以帮助解决这个问题。不胜感激! -Tony

增加: 我做了一些研究,我发现我所拥有的可能是一个典型的问题,正如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的登录状态吗?换句话说,是(我必须手动点击Okay才能回到我在Simulator中的应用程序)(我得到FBSessionStateClosedLoginFailed状态的原因)?

8 个答案:

答案 0 :(得分:27)

您是否在AppDelegate中设置了此功能?

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

答案 1 :(得分:8)

我遇到了同样的问题

  1. 我们创建了facebook app(developer.facebook.com)设置我们的 bundle id(例如com.MyCompany.MyApp)
  2. 当然,使用相同的包ID
  3. 创建了我们的iOS应用
  4. 将我们的应用程序交付给客户后,他更改了包ID 没有通知我们。
  5. 显然他开始得到FBSessionStateClosedLoginFailed错误!

    因此,您的iOS项目和Facebook应用程序之间可能有不同的软件包ID。

答案 2 :(得分:7)

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

答案 3 :(得分: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];
    }

答案 4 :(得分:2)

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

答案 5 :(得分:1)

我遇到了这个问题,因为我在[FBSession.activeSession close] app委托回调中调用了applicationDidEnterBackground:。这会关闭会话,以便当重定向将应用程序重新启动以打开会话时,它会因为已进入关闭状态而失败。

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

答案 6 :(得分:1)

转到Facebook.com。在左侧面板上打开您的应用程序 - >现状&评论 - >有一个文本切换“你想让这个应用程序及其所有实时功能可供公众使用吗?”。打开它

Status & Review page

答案 7 :(得分:0)

好。我在FBLoginCustomUISample的某个地方跟着github.com,这是facebook本身facebook登录实施的一个有效例子。您还可以在iOS应用中创建facebook登录功能时阅读我的​​解决方法。这是我的链接:

Native iOS Facebook SSO won't return to app