Как выйти из fbsession?

H, в моем приложении пользователь может войти в приложение с помощью facebook. Я могу успешно войти в систему с помощью fbsession, но я не могу выйти из формы fbsession. Как только пользователь войдет в приложение, я вручную выйду из fbsession. но я не могу выйти из fbseesion. В моем приложении, когда я когда-либо нажимаю кнопку входа в систему, она не ведет на страницу входа в систему, а напрямую отображает страницу диалога, где, что касается меня, я должен показывать страницу входа каждый раз в своем приложении. вот мой код

   - (IBAction)facebooklogin:(id)sender
 {
       [FBSession openActiveSessionWithReadPermissions:@[@"email",@"user_location",@"user_birthday",@"user_hometown"]
                                   allowLoginUI:YES
                              completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {

                                  switch (state) {
                                      case FBSessionStateOpen:
                                          [[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
                                              if (error) {
                                                  NSLog(@"error:%@",error);
                                              }
                                              else
                                              {
                                                  // retrive user's details at here as shown below
                                                  NSLog(@"user   :%@",user);

                                                  NSDictionary *resultdict=[[[NSDictionary alloc]initWithObjectsAndKeys:user.first_name,@"FirstName",user.last_name,@"LastName",user.last_name,@"LastName",user.birthday,@"Birthday",user.username,@"Username",[user objectForKey:@"email"],@"Email",user.id,@"FBUserId", nil]autorelease];

                                                  [[NSUserDefaults standardUserDefaults]setObject:resultdict forKey:@"FBUserDetails"];
                                                  NSString *userid=[NSString stringWithFormat:@"%@@social",user.id];
                                                  [self performSelector:@selector(checkSocialNetworkingRegisteredOrNot:) withObject:userid afterDelay:0.0f];
                                              }
                                          }];
                                          break;

                                      default:
                                          break;
                                  }
                              } ];
 }

/////////////////////////выход из fbsession вручную ///////////

  - (IBAction)logoutmanullayInbackground:(id)sender
{
[FBSession.activeSession closeAndClearTokenInformation];
[[FBSession activeSession] close];
[[FBSession activeSession] closeAndClearTokenInformation];
[FBSession setActiveSession:nil];

}


person user2230971    schedule 07.10.2013    source источник
comment
Почему вы хотите каждый раз беспокоить пользователя формой входа? Обычно вы просто входите в систему один раз, а затем сохраняете свой статус. Конечно, вам нужно дать им возможность выйти из системы по требованию. Но я не вижу причин для входа в систему с каждым запросом...   -  person Grzegorz Krukowski    schedule 07.10.2013
comment
Эта строка звучит правильно для выхода из системы: [FBSession.activeSession closeAndClearTokenInformation] - это не работает?   -  person Grzegorz Krukowski    schedule 07.10.2013
comment
мое приложение является потребительским приложением для ресторана, поэтому каждый клиент может войти в систему   -  person user2230971    schedule 07.10.2013
comment
[FBSession.activeSession closeAndClearTokenInformation] не работает   -  person user2230971    schedule 07.10.2013
comment
У меня работает - попробовал. Когда ты это делаешь? сразу после того, как он вошел в систему? Оставьте только одну строку: [FBSession.activeSession closeAndClearTokenInformation];   -  person Grzegorz Krukowski    schedule 07.10.2013
comment
@Grzegorz Krukowski Это не работает, я пробовал, но все равно открывается вид входа в систему.   -  person user2230971    schedule 07.10.2013


Ответы (1)


Вы выходите из системы (тот факт, что вы снова видите кнопку с надписью «Войти», означает, что вы успешно вышли из системы). Однако, если вы используете систему единого входа (через встроенный вход в iOS или приложение Facebook), то, когда пользователь снова нажимает «Войти», ему не будет предложено (поскольку пользователь в приложении или на устройстве уже авторизовал ваше приложение).

Чтобы обойти это (поскольку вы говорите, что делаете приложение для ресторана), вы можете удалить приложение Facebook (и удалить логин из iOS) или вы можете войти в систему с помощью FBSessionLoginBehaviorForcingWebView при открытии сеанса.

См. https://developers.facebook.com/docs/reference/ios/current/class/FBSession/#openWithBehavior%3AcompletionHandler%3A

person Ming Li    schedule 07.10.2013
comment
Я решил эту проблему, используя FBSessionLoginBehaviorForcingWebView. - person user2230971; 08.10.2013