Мне любопытно, как эти системы работают технологически. Насколько я понимаю Вы делаете следующее как пользователь:
Но, как сторонний сайт говорит с FB о том, кто Вы? Я могу понять, как это могло получить информацию, в которой это нуждается, когда Вы первоначально открываете доступ приложению, но как это знало бы впоследствии? Вот сценарий:
Выполняется фоновая проверка связи с использованием IFrame, и если текущая учетная запись уже авторизовала приложение, то в приложение возвращаются маркер доступа и идентификатор пользователя. При этом приложение может решить, что делать (обычно устанавливают файл cookie и обновляют страницу, чтобы сервер мог повторно отобразить страницу, зная, кто вы, на основе только что установленного файла cookie). Если вам интересно, вы можете посмотреть на реализацию Facebook метода JS на стороне клиента под названием FB.getLoginStatus () здесь: http://github.com/facebook/connect-js/ blob / master / src / core / auth.js # L117
Проверьте OpenID. Также очень интересна эта презентация: Facebook Connect vs FriendConnect
Он использует трехстороннюю систему аутентификации под названием OAuth.
После запуска процесса сторонний сайт подключается к Facebook, и если вы уже вошли в Facebook (сеанс в реальном времени с файлами cookie), он просто использует это и запрашивает разрешение на авторизацию стороннего приложения.
После авторизации он получит auth_token, который сможет использовать для доступа к информации из вашей учетной записи, если вы не отмените его доступ.