Подтвердить что ты не робот

FbDidLogin не вызывается

Итак, я немного пообщался с SDK для iOS для iOS, и по последней версии я не могу получить метод fbDidLogin. Процесс входа в систему работает нормально, а Safari используется на симуляторе, а приложение Facebook используется при его запуске на устройстве. Однако после входа в систему я возвращаюсь обратно в свое приложение (как и должно быть), но поскольку метод fbDidLogin не был вызван, ничего не изменилось. Что касается моего приложения, я не вошел в систему. Демо-приложение, входящее в комплект SDK, отлично работает. Поэтому я, очевидно, что-то делаю неправильно, но я понятия не имею, как это проверить. Я triple-проверил все методы, используемые в демонстрационном приложении, против моего собственного, и насколько я вижу, все выглядит одинаково. Любые мысли или идеи о том, как отладить это? Или у кого-то были подобные проблемы?

Спасибо!

4b9b3361

Ответ 1

Я столкнулся с той же проблемой только сейчас. Я решил это, добавив следующий код в свой делегат приложения:

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

где контроллер - мой экземпляр UIViewController, а facebook - мой экземпляр Facebook.

Вам также необходимо зарегистрировать свое приложение, чтобы обрабатывать схему URL-адреса приложения fb (сделайте это в Info.plist).

Ответ 2

Одной из распространенных ошибок может быть не реализация следующего метода обратного вызова в главном делете приложения, а в другом месте. Внедрите этот метод в свой класс, полученный из UIApplicationDelegate. Это точка входа, которую iOS вызывает после переключения контекста, чтобы вернуть приложение на передний план.

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
     // obtain facebook instance ref
     [ facebook handleOpenURL: url ];
   }

Если вы правильно создали идентификатор приложения FB и правильно сопоставили URL-адрес, как определено в https://developers.facebook.com/docs/guides/mobile/#ios, он должен работать.

Ответ 3

Я решил проблему. Если facebook является объектом вашего первого контроллера представлений, который загружается ur appleglegate, то вы можете использовать свойство viewcontroller appdelegate для ссылки на объект facebook, например.

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

Ответ 4

Мое дело в том, что в ApDelegate у меня не было init init, используя правильный делегат. Я указал, что это указывает на себя, когда он должен использовать контроллер вида, где пользователь фактически выполнил вход.

Из AppDelegate:

facebook = [[Facebook alloc] initWithAppId:@"111111111111111" andDelegate:homeViewController];

Ответ 5

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

должен писать на AppDelegate.m, чтобы он был доступен для всего приложения.

понравится, если он работает

Ответ 6

Как сказал Jiri в первом комментарии, вы должны реализовать этот метод в своем делете делегата

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

Если loginScreen - это ваш контроллер представлений, который вы хотите использовать для ведения журнала или создания чего-либо еще с Facebook, то это не место, кроме делегата приложения.

Удалить этот метод Если вы используете его

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{

}

Ответ 7

Недавно я просто столкнулся с этим. Моя проблема заключалась в том, что настройки приложения на facebook были настроены таким образом, что приложение не было разрешено. Следовательно, мой метод fbDidNotLogin вызывается. Решение заключалось в том, чтобы перейти на

  • Facebook DevelopersAppsMy AppEdit SettingsBasic
  • Убедитесь, что в разделе "Выберите, как ваше приложение интегрируется с Facebook" категория "Native iOS App" не была включена (зеленая галочка).