Вход в Facebook с сохранением имени пользователя после выхода из системы

StackOverflow https://stackoverflow.com//questions/12657091

  •  11-12-2019
  •  | 
  •  

Вопрос

Просто пытаюсь понять философию входа в Facebook.

  1. Если я вошел в Facebook, мой сайт уловит это и автоматически авторизует меня.
  2. Если я вышел из Facebook, я не авторизован в Facebook, сайт все равно работает.
  3. Если я вхожу в систему через свой веб-сайт или через Facebook, я прохожу аутентификацию и могу использовать Facebook или свой веб-сайт в качестве аутентифицированного пользователя.
  4. Если я затем выйду из Facebook, мое приложение все равно будет аутентифицировано, но не Facebook.
  5. Если я выйду из своего приложения, удалю все сеансы и вручную удалю файлы cookie, я смогу успешно выйти из системы.

Проблема, с которой я столкнулся после выхода из обоих, заключается в том, что $facebook->getUser(); и getAccessToken(); все еще сохраняю мой использованный идентификатор и токен.Откуда они берутся?

Я использую PHP SDK

Это было полезно?

Решение

Когда вы входите в свое приложение с помощью Facebook, ваше приложение запрашивает Facebook аутентификацию.Если аутентификация прошла успешно, Facebook сообщит вашему приложению, что вы прошли аутентификацию.Затем ваше приложение поддерживает свои собственные сеансы.

То, что вы делаете в своей учетной записи Facebook или в своем приложении, может не отражать изменения друг друга.Например, когда вы выходите из своей учетной записи Facebook, ваше приложение не узнает об этом, поскольку, что касается вашего приложения, вы прошли аутентификацию.В то же время, когда вы вышли из Facebook, Facebook не сообщил вашему приложению, что вы уже вышли из системы.

Приложения и Facebook (или другие поставщики OAuth) поддерживают свои отдельные сеансы.

По вашим вопросам:

  1. Да, ваш веб-сайт перенаправляет посетителя на ссылку в Facebook, которая автоматически сообщает вашему клиенту, что вы вошли в систему.Вы больше не видите подсказки, поскольку вы уже предоставили разрешения приложению во время первой попытки получить доступ к приложению с помощью своей учетной записи Facebook.

  2. Это будет работать из-за отдельных сеансов.Когда вы выходите из Facebook, вы все еще находитесь в приложении.Нет, если только приложение не попытается еще раз подтвердить вашу личность через Facebook — в этом случае аутентификация не удастся.

  3. Это верно, НО вы не можете войти в свое приложение без входа в Facebook, если у вас нет другого способа аутентификации в своем приложении без Facebook (например, альтернативный вход со связанными учетными записями).Однако в этом случае вам все равно необходимо войти в Facebook, используя форму входа в систему.Вы не можете войти в Facebook через свое приложение.

  4. Это верно.Если вы выйдете из Facebook, вы выйдете из Facebook.Из-за отдельных сеансов вам также необходимо выйти из приложения.

  5. Тоже верно.

В вашем случае, вероятно, происходит следующее:

  1. Вы вышли из приложения
  2. Вы будете перенаправлены на вашу домашнюю страницу
  3. Ваша домашняя страница пытается аутентифицировать вас, поскольку вы не вошли в систему.
  4. Вы будете перенаправлены на Facebook
  5. Facebook подтверждает вашу личность и перенаправляет в приложение
  6. Приложение снова аутентифицирует вас

Чтобы решить эту проблему, ваша домашняя страница не должна проходить автоматическую аутентификацию.Должна быть кнопка, которую пользователи должны нажать — что-то вроде «Войти через Facebook», прежде чем вы начнете аутентификацию с помощью Facebook.

Вы также не можете принудительно выйти из Facebook.Поэтому после использования вашего приложения ваш пользователь должен выйти из вашего приложения и Facebook.Если ваше приложение использует сеансовые файлы cookie, пользователь выйдет из системы, если браузер будет закрыт.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top