Я пытаюсь перевести свое приложение в новый Facebook SDK 3.1 (с поддержкой проверки подлинности iOS6).
У меня было все нормально, поэтому я решил удалить приложение из своего списка авторизованных приложений на веб-сайте FB, чтобы проверить, что iOS снова попросит разрешения.
Теперь мой первый вызов [FBRequest requestForMe]
вызывает эту ошибку:
Ответ:
{
"error": {
"message": "Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.",
"type":"OAuthException",
"code":190,
"error_subcode":460
}
}
Некоторые сведения:
Я пытаюсь открыть сеанс следующим образом:
[FBSession openActiveSessionWithReadPermissions:nil
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
switch (state) {
case FBSessionStateOpen:
[self presentPostOptions];
break;
case FBSessionStateClosed:
case FBSessionStateClosedLoginFailed:
[FBSession.activeSession closeAndClearTokenInformation];
break;
default:
break;
}
Затем я получаю обратный вызов в состоянии FBSessionStateOpen
(на данный момент iOS не представила диалоговое окно запроса, это следует ожидать)? Facebook регистрирует это:
2012-09-26 13:43:43.768 MyApp[2177:907] FBSDKLog: FBSession INVALID transition from FBSessionStateCreated to FBSessionStateClosed
2012-09-26 13:43:43.769 MyApp[2177:907] FBSDKLog: FBSession transition from FBSessionStateCreated to FBSessionStateCreatedOpening
2012-09-26 13:43:43.837 MyApp[2177:907] FBSDKLog: FBSession transition from FBSessionStateCreatedOpening to FBSessionStateOpen
Как только сеанс открыт, в presentPostOptions я делаю это:
- (void)presentPostOptions
{
[[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
if (!error) {
self.usersName = user.name;
self.usersID = user.id;
[self getPages];
}
else
{
[self didFailWithError:error];
}
}];
}
Прежде чем вызывается предыдущий блок завершения, мой блок обработчика основного состояния вызывается с состоянием FBSessionStateClosed
. Тем временем, в SDK Facebook зарегистрирована ошибка выше.
Я не могу найти способ reset системы; и я действительно не понимаю причину.
Кто-нибудь может пролить свет?