Facebook单点登录后应用崩溃

时间:2012-05-08 20:53:18

标签: objective-c ios facebook ios-simulator facebook-ios-sdk

我已经在我的应用程序中实现了Facebook,并注意到我遇到了一些我无法弄清楚的问题。

Facebook签名后,在Facebook.app批准后返回我的应用程序,从XCode运行和调试时...应用程序在恢复时挂起,大约30-40秒后切换回请求的页面facebook身份验证。 当我独立运行应用程序时,如果没有在XCode中调试,应用程序会在10-15秒后崩溃。我从设备中提取了崩溃日志,结果是:http://pastebin.com/MeT7Rt52

当我在模拟器中测试时,会发生同样的事情......尽管它使用的是Safari。我不相信Facebook或Safari是或可能是问题的根源......因为它不可能。

我搜索过,但找不到这个问题的答案。

以下是我的AooDelegate中的一些代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
    [FlurryAnalytics startSession:APP_FLURRY];

    [TestFlight takeOff:APP_TESTFLIGHT_KEY];
    facebook = [[Facebook alloc] initWithAppId:APP_FB_APP_ID andDelegate:self];

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    [self.window setBackgroundColor:[UIColor scrollViewTexturedBackgroundColor]];

    [...]

    return YES;
}

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return [facebook handleOpenURL:url]; 
}

- (void)fbDidLogin {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
    [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
    [defaults synchronize];
}

3 个答案:

答案 0 :(得分:2)

我认为这不会解决问题,但是,您可以尝试添加此方法:

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

{@ 1}}已被弃用。

答案 1 :(得分:0)

Facebook SDK是完整的错误,我使用的是Facebook + singleton,它将Facebook SDK组合成单一形式,使其更容易使用。

答案 2 :(得分:0)

我解决了问题,问题的答案是我没想到的。 在我的应用程序中,我使用了TestFlightApp的API。我在应用程序启动时启动它,因为我应该...但是,这也是阻止应用程序返回其先前状态(如图所示)的事情。

我使TestFligthApp无效,应用程序恢复原状。

感谢您的回答!