Как проверить, подключен ли пользователь к facebook?

Я хочу перенаправить пользователей, которых они подключили к facebook, а не для анонимных пользователей, которых они не подключили к facebook. Как это сделать? Я использую этот код для получения данных из facebook. Этот код выполняется в первой строке на моей странице на основе WordPress.

this_code_php:

<?PHP session_start(); require 'facebook.php'; $facebook = new Facebook(array( 'appId' => 'my_number_here', 'secret' => 'my_number_here', 'cookie' => true )); // Get User ID $user = $facebook->getUser(); if ($user) { $logoutUrl = $facebook->getLogoutUrl(); //echo '$logout '.$logoutUrl; } else { $loginUrl = $facebook->getLoginUrl(); //echo '$login '.$loginUrl; echo "<script type='text/javascript'>top.location.href = '$logoutUrl';</script>"; } ?> 

Существует разница между CONNECTING для facebook и LOGGING в моем приложении. Обратите внимание: если я знаю, что пользователь подключен к facebook (например, имеет открытую вкладку facebook), я хочу автоматически перенаправить его на мою страницу со всеми данными в facebook. Но я не буду беспокоить других пользователей (не зарегистрированных на Facebook) на странице входа в facebook. Если они подключены – ОК – пусть просто перенаправляется на мою страницу с данными в facebook. Если они не являются – забудьте войти в facebook и забудьте данные в facebook – избегайте facebook. Проблема заключается в строке: echo "top.location.href = '$ logoutUrl';";

Что делает программа? Если пользователь подключен к facebook – программа перенаправляет следующий, и пользователь не знал, было ли предпринято какое-либо действие. Но если пользователь не подключен к программе facebook, отображающей страницу входа в систему, даже для пользователя они не зарегистрированы на facebook.

Я хочу заменить строку выше на эту строку: if (/ user connected /) echo "top.location.href = '$ logoutUrl';";

но я не знаю, как проверить, подключен ли пользователь к Facebook? Если это возможно в PHP или мне нужно связать PHP и Javascript, что немного сложно. А как это сделать?

CBroe прав. Вы должны проверить статус клиента на стороне клиента. Чтобы добавить некоторые сведения о том, что сказал CBroe, документ дает вам полезный пример.

 FB.getLoginStatus(function(response) { if (response.status === 'connected') { // the user is logged in and has authenticated your app var uid = response.authResponse.userID; var accessToken = response.authResponse.accessToken; } else if (response.status === 'not_authorized') { // the user is logged in to Facebook, // but has not authenticated your app } else { // the user isn't logged in to Facebook. } }); 

Я хотел опубликовать это как комментарий к предыдущему ответу, чтобы поддержать его, но форма комментариев игнорирует разрывы строк …

Другой вариант – использование пользователем $ facebook-> getUser (). Если не войти в Facebook, это вернет 0.

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

Как только пользователь подключится к вашему приложению, вы можете использовать FB.getLoginStatus из SDK JavaScript, чтобы определить, вошли ли они в настоящее время в Facebook или нет.

Это нужно сделать на стороне клиента, потому что только JS SDK может сделать кросс-доменный запрос для проверки файлов cookie, установленных в домене facebook.com – это невозможно на стороне сервера.

Тот, который вы определили со своим клиентом на стороне клиента, PHP SDK может выбрать это при следующем запросе.