Вход в Facebook для веб-сайтов: передовая практика для выхода из Facebook пользователя? - PullRequest
5 голосов
/ 06 февраля 2012

Я пишу веб-приложение, в котором пользователям нужно будет входить через Facebook (логин без Facebook не имеет смысла в контексте приложения).В идеале, после первого посещения, когда пользователь посещает /index, мое веб-приложение видит cookie-файл, которое оно разместило ранее, и автоматически выполняет вход в систему пользователя и переходит в приложение (/app).

Моя проблемавозникает, когда пользователь выходит из Facebook и возвращается в мое приложение.Так как их cookie на моем домене все еще будут присутствовать, а их oauth_token будут по-прежнему действительны (они действуют в течение 60 дней), я все равно могу автоматически войти в систему, и приложение будет работать, как и ожидалось.

Мне кажется неправильным, что приложение остается в системе со своей учетной записью Facebook, даже если они не вошли в Facebook.Я играл на самом Stackoverflow;это позволяет такое поведение.Мои переживания неуместны или есть рекомендуемый способ проверить, вошел ли пользователь в Facebook при первом запросе /index с моего сервера.

1 Ответ

2 голосов
/ 09 февраля 2012

На мой взгляд, я не думаю, что ваше приложение должно оставаться в системе, пока пользователь уже вышел из Facebook.

Один из сценариев, где это может быть нежелательно, это: что, если я использую ваше приложение с общедоступного компьютера. После того как я вышел из Facebook, ваше приложение все еще «запоминает» меня. И теперь любой, кто использует этот компьютер, примет мою личность Facebook в вашем приложении.

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

Я рекомендую вам не использовать свой собственный файл cookie для запоминания статуса пользователя на Facebook. Для этого всегда полагайтесь на сам Facebook.

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

Лично я использую этот фрагмент кода для вызова API Javascript Facebook с целью входа пользователя в систему:

/* 
 * Init code for Facebook connect
 */
window.fbAsyncInit = function() {
        FB.init({
                appId      : FACEBOOK_APP_ID, // App ID
                channelUrl : CHANNEL_URL, // Channel File
                status     : true, // check login status
                cookie     : true, // enable cookies to allow the server to access the session
                xfbml      : true,  // parse XFBML
                oauth      : true
        });

        // check facebook login status
        FB.getLoginStatus(function(response) {
                console.log("FB login status: " + response.status);
                if (response.status === 'connected') {
                        showWelcome();  //display welcome message
                } else if (response.status === 'not_authorized') {
                        // the user is logged in to Facebook, but not connected to the app
                        showFbLogin();  //display Facebook Login button
                } else {
                        // the user isn't even logged in to Facebook.
                        showFbLogin();  //display Facebook Login button
                }
        });

        // subscribe to facebook events
        FB.Event.subscribe('auth.authResponseChange', function(response) {
                fbAuthResponseChanged(response);
        });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...