Проверка статуса входа в Facebook: на стороне клиента или на стороне сервера

#php #javascript #facebook

#php #javascript #Facebook

Вопрос:

На веб-сайте, который я создаю, мне нужно проверить, вошел ли пользователь в facebook. У меня есть две возможности. Я могу либо сделать это на стороне сервера, используя PHP-код, подобный следующему:

 $facebook = new Facebook(array(
                'appId'  => _FACEBOOK_APP_ID,
                'secret' => _FACEBOOK_SECRET,
                'cookie' => true));
$me = $facebook->api("/me");
if (isset($me["id"]) {
    // User is logged in.
} else {
    // User is not logged in.
}
  

В качестве альтернативы, я могу сделать это на стороне клиента, используя javascript следующим образом:

 FB.getSession();
if (session != null) {
    // User is logged in.
} else {
    // User is not logged in
}
  

Мне интересно, каковы плюсы и минусы двух подходов.

Ответ №1:

Я просто хочу указать, что показанный вами вариант JavaScript устарел и больше не работает, ссылка на документы (http://developers.facebook.com/docs/reference/javascript/FB.getSession /) перенаправляет на новую функцию getAuthSession() для обработки OAuth2

По состоянию на 13 декабря 2011 года JavaScript SDK теперь поддерживает только OAuth 2.0 для аутентификации. Возможность включить OAuth 2.0 в JS SDK была впервые представлена в июле. Всем приложениям было предоставлено время до 1 октября 2011 года для тестирования и миграции. С этим изменением, пожалуйста, убедитесь, что вы используете FB.getAuthResponse для получения токена доступа вместо FB.getSession. Узнайте больше о конкретных изменениях, которые она

Ответ №2:

  1. Ваш подход «на стороне сервера» неверен. Пока вы используете PHP-SDK, я рекомендую вам следовать подходу в примере, прилагаемом к библиотеке (проверка сеанса перед выполнением вызовов graph $facebook->getSession(); .
  2. Вам нужно «понять», что вам на самом деле «нужно»!
    Проверка того, что пользователь «вошел в Facebook«, не означает, что он «подключен к вашему приложению / веб-сайту«

Я предлагаю вам еще раз прочитать документацию Facebook, чтобы лучше понять API.

Ответ №3:

Я думаю, основное различие заключается в том, что на стороне клиента устанавливается соединение между клиентом и facebook. На стороне сервера это между вашим сервером и facebook. Таким образом, нагрузка на ваш сервер может возрасти, если вы все делаете на стороне сервера.