#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:
- Ваш подход «на стороне сервера» неверен. Пока вы используете PHP-SDK, я рекомендую вам следовать подходу в примере, прилагаемом к библиотеке (проверка сеанса перед выполнением вызовов graph
$facebook->getSession();
. - Вам нужно «понять», что вам на самом деле «нужно»!
Проверка того, что пользователь «вошел в Facebook«, не означает, что он «подключен к вашему приложению / веб-сайту«
Я предлагаю вам еще раз прочитать документацию Facebook, чтобы лучше понять API.
Ответ №3:
Я думаю, основное различие заключается в том, что на стороне клиента устанавливается соединение между клиентом и facebook. На стороне сервера это между вашим сервером и facebook. Таким образом, нагрузка на ваш сервер может возрасти, если вы все делаете на стороне сервера.