Прежде всего, я прочитал как этот, так и этот вопрос, чтобы решить проблему ниже и перед тем, как спросить.
Моя проблема в том, что при истечении срока доступа accessToken (либо из-за истечения срока действия, либо вручную, удалив приложение из моего Facebook App Center), следующий код:
if ([[FBSession activeSession] isOpen]) {
//do something
}
else {
[FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
if(FB_ISSESSIONOPENWITHSTATE(status)) {
//do something
}
}
}];
}
попадает в блок else с открытием FBSession.activeSession, но когда выполняется "делать что-то", accessToken недействителен, поэтому запрос получает ошибку: код состояния HTTP: 400. Когда я пытаюсь выполнить всю процедуру дважды сразу, FBSession запрашивает разрешение (либо UIAlertView для iOS6, интегрированного facebook, Facebook App, либо Facebook на сайте Safari), а все остальное выполняется гладко.
Я забочусь о том, почему мне приходится делать все дважды, чтобы хорошо работать, и почему Facebook SDK не может обнаружить в первый раз, что activeSession и accessToken недействительны.
Спасибо всем заблаговременно!