Несмотря на то, что вы приняли свое собственное решение как работающее, существует простое решение исходного вопроса, которое завершается наличием кода входа в синглтоне.Единственное, что вам нужно добавить в делегат приложения, это openURL (и handleOpenURL для поддержки до 4.2).Вот пример:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
if ([[url scheme] isEqualToString:[NSString stringWithFormat:@"fb%@", facebookAppId]]) {
return [[FacebookSingleton sharedFacebook].facebook handleOpenURL:url];
}
}
Все остальное, что вы можете поместить в свой синглтон (включая весь код входа в систему), и не нужно загромождать делегата вашего приложения.Затем ваш синглтон реализует код FBSessionDelegate.В этом примере кода предполагается, что вы объявляете свойство в своем синглтоне под названием «Facebook».Здесь находится объект Facebook, а не ваш делегат.
Примечание. Я проверяю схему перед пересылкой URL-адреса в Facebook.Это нужно только в том случае, если у вашего приложения есть другие схемы, которые оно принимает.
Если кому-то нужен одноэлементный код, оставьте сообщение, и я также смогу опубликовать его.