Facebook не выходит из системы полностью - IOS

Пока я пытался интегрировать fbsdk(facebook) в свое приложение, это сеанс входа в систему работает отлично. Но пока я выхожу из приложения mp, он показывает выход actionsheet и я могу легко выйти из системы. Но когда я пытаюсь снова войти в Facebook, он переходит непосредственно к странице подтверждения facebook, а не к деталям страницы входа. Надеюсь на вашу помощь.

введите описание изображения здесь

коды, которые я использовал для выхода.

  FBSDKLoginManager *manager = [[FBSDKLoginManager alloc] init];
            [FBSDKAccessToken setCurrentAccessToken:nil];
            [FBSession.activeSession closeAndClearTokenInformation];

            NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
            for(NSHTTPCookie *cookie in [storage cookies])
            {
                NSString *domainName = [cookie domain];
                NSRange domainRange = [domainName rangeOfString:@"facebook"];
                if(domainRange.length > 0)
                {
                    [storage deleteCookie:cookie];
                }
            }
            [manager logOut];

4 ответа

Это не может произойти, потому что вход в Facebook осуществляется либо с помощью приложения Safari, либо с помощью приложения Facebook (если приложение Facebook установлено на вашем телефоне, и вы добавили его в учетную запись настроек).

Это связано с тем, что Safari проводит сеанс в Facebook и сохраняет его в виде файлов cookie. А в случае приложения Facebook, если оно подключено к настройкам учетных записей, оно продолжит удерживать сеанс до тех пор, пока вы не выйдете из системы вручную. Выход из приложения safari или facebook вручную или удаление cookie-файлов safari - это единственный способ выйти из Facebook, если он уже зарегистрирован.

Используйте это... [FBSDKProfile enableUpdatesOnAccessTokenChange:YES];

Я сообщил об этом в Facebook как об ошибке, а затем как о проблеме безопасности (вы выходите из системы, а затем можете войти позже без повторного ввода пароля...).

Они ответили, что это не ошибка, а особенность. "По дизайну".

Похоже, что единственный выход из системы - это вызов URL-адреса с телефона: https://m.facebook.com/logout.php?h=[a токеноподобная строка длиной 16 символов]&t=[число длиной 10 символов ]&refid=[число]

Отсюда атрибут "h" кажется обязательным. Если вы пропустите все остальное, это все еще работает. Одна проблема: я не знаю, что это за строка. Есть идеи?

Или другие способы выхода из системы?

Если вы хотите отменить все разрешения, то вы должны сделать это:

[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me/permissions" parameters:nil 
    HTTPMethod:@"DELETE"] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
  // ...
}];

https://developers.facebook.com/docs/facebook-login/permissions/v2.4

Но даже это на самом деле не гарантирует, что ваше приложение будет удалено от доступа к пользователю через Facebook, опять же, вы в основном деактивируете активный токен при выходе из Facebook, но ВЫ НЕ УДАЛЯЕТЕ разрешения для этого пользователя через facebook.

Это что-то вроде дерьма, если вы действительно хотите удалить пользователей или если пользователи хотят удалить ВАШЕ приложение из своей учетной записи Facebook, но это настолько далеко, насколько вы можете пойти, ЕСЛИ пользователь сам не удаляет разрешения в своей учетной записи вручную, вот что Facebook должен сделать скажи об этом:

Отзыв входа

Вы также можете позволить людям полностью деавторизовать приложение или отменить регистрацию, сделав вызов этой конечной точке Graph API:

DELETE /{user-id}/permissions

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

Другие вопросы по тегам