Позвольте мне предположить, что вы извлекли свой код FB в другой класс вместо того, чтобы реализовывать его в своем AppDelegate?
Я считаю, что проблема заключается в том, что страница FB указала нам сделать что-то подобное в их демонстрационном коде:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [facebook handleOpenURL:url];
}
Однако демонстрационный код Facebook реализовал всю логику внутри AppDelegate.Если вы, как и я, извлек код связи FB в другой класс, приведенный выше код не будет выполнен должным образом (если у вас есть код в вашей AppDelegate, переменная facebook не указывает на нужный объект. Если у вас есть код вваш извлеченный класс, он не будет вызван) и информация о вашем токене не будет включена.
В итоге я сделал следующее:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [fbModel handleOpenURL:url];
}
, где fbModel - это переменная экземпляра, указывающая на код, выполняющий FB.А затем в моей реализации fbMode я делаю что-то вроде этого:
- (BOOL)handleOpenURL:(NSURL *)url
{
return [facebook handleOpenURL:url];
}
Где facebook - это переменная instacne в моем классе FBModel, так что facebook = [[Facebook alloc] initWithAppId: AppID] вызывался при инициализации.