Intereting Posts
ничего не происходит после проверки скрипта входа в систему php jquery Как синхронизировать электронные письма (в задаче) и отправлять обычные электронные письма в настоящий момент в других контроллерах? Как вставить данные в дочернюю таблицу в mysql Почему я не могу напрямую получить доступ к массиву с индексом? Symfony 1.4 с TCPDF: как получить данные из базы данных и показать их как .pdf-файл? Запуск приложения Windows Speech SDK в PHP Как использовать php для получения уникальной пары слов (строки) и вставки в таблицу mysql Предупреждение: mysqli_select_db () ожидает ровно 2 параметра, 1 данный окончательный способ получить IP-адрес пользователя php PHPUnit, интерфейсы и пространства имен (Symfony2) Когда вы автоматически создаете субдомены при регистрации пользователей, это создает новый веб-сайт или дает внешний вид веб-сайта? Разбор большого XML в PHP Вставка данных в несколько таблиц PHP MySQL PHP Как заблокировать прокси с моего сайта? Как перенаправить страницу ошибки и выполнить маршруты в Zend Framework 1.x

Facebook PHP SDK – Пользователь по-прежнему отображается как зарегистрированный в веб-приложении, хотя выходил из Facebook

Я работаю на веб-сайте для себя, чтобы обеспечить коучинг для людей, которые заинтересованы в присоединении к фитнес-группам. Для этого я решил использовать Facebook в качестве платформы для групповой переписки. Впоследствии я начал работать над включением входа в Facebook на свой веб-сайт (www.fitnesschallenges.net) и нахожу картографирование пользователей Facebook, которые присоединяются к группе в базу данных соответствующей группы на моем сайте.

Платформа, которую я использую для моего сайта, – это WordPress, и я должен был быть несколько креативным, чтобы правильно использовать функции входа / выхода из системы в качестве плагина WordPress (создавая переход между скриптами – fblogin.php и fblogout.php) , До сих пор все работает так, как должно, за одним исключением … когда пользователь выходит из Facebook, мой сайт продолжает показывать их вошедшим в систему.

Я выполнил ряд поисков этой конкретной проблемы, из которых есть и другие, которые испытали такое же поведение. Результат моих поисков приводит меня к мысли, что это связано с сеансами и / или установкой токенов аутентификации, но я очень начинающий программист, и я ищу какое-то направление для этого.

Заранее спасибо.

userreg.php `

global $wpdb; // Remember to copy files from the SDK's src/ directory to a // directory in your application on the server, such as php-sdk/ require_once(plugin_dir_path( __FILE__ ) . "facebook-php-sdk/src/facebook.php"); $loginscript = plugins_url( 'fblogin.php', __FILE__ ); $logoutscript = plugins_url( 'fblogout.php', __FILE__ ); $challengeid = $atts['challengeid']; $config = array( 'appId' => '#################', 'secret' => '#################', 'allowSignedRequest' => false // optional but should be set to false for non-canvas apps ); $facebook = new Facebook($config); $user_id = $facebook->getUser(); if($user_id) { // We have a user ID, so probably a logged in user. // If not, we'll get an exception, which we handle below. try { $user_profile = $facebook->api('/me','GET'); function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } $id = test_input($user_profile['id']); $name = test_input($user_profile['name']); $first_name = test_input($user_profile['first_name']); $last_name = test_input($user_profile['last_name']); $link = test_input($user_profile['link']); $username = test_input($user_profile['username']); $gender = test_input($user_profile['gender']); $email = test_input($user_profile['email']); $timezone = test_input($user_profile['timezone']); $locale = test_input($user_profile['locale']); $verified = test_input($user_profile['verified']); $table_name= $wpdb->prefix . "fcm_fbusercreds"; $currentmember_result = $wpdb->get_results( " SELECT * FROM $table_name WHERE id = $id " ); if(empty($currentmember_result)){ $wpdb->insert( $table_name, array( 'lastupdated' => current_time('mysql'), 'id' => $id, 'name' => $name, 'first_name' => $first_name, 'last_name' => $last_name, 'link' => $link, 'username' => $username, 'gender' => $gender, 'email' => $email, 'timezone' => $timezone, 'locale' => $locale, 'verified' => $verified, 'coach' => "0" ) ); } else { foreach ($currentmember_result as $result){ $wpdb->update( $table_name, array( 'lastupdated' => current_time('mysql'), 'name' => $name, 'first_name' => $first_name, 'last_name' => $last_name, 'link' => $link, 'username' => $username, 'gender' => $gender, 'email' => $email, 'timezone' => $timezone, 'locale' => $locale, 'verified' => $verified, 'coach' => "0" ), array( 'id' => $result->id ) ); } } return '<a href="' . $logoutscript . '?final=0&ls=' . $logoutscript . '&site=' . site_url() . '&pp=' . $_SERVER['REQUEST_URI'] . '"><img src="' . plugins_url( 'images/fb_logout.png' , __FILE__ ) . '" width="240" height="30" alt="" /></a>'; } catch(FacebookApiException $e) { // If the user is logged out, you can have a // user ID even though the access token is invalid. // In this case, we'll get an exception, so we'll // just ask the user to login again here. error_log($e->getType()); error_log($e->getMessage()); return '<a href="' . $loginscript . '?redirect=1&site=' . site_url() . '&pp=' . $_SERVER['REQUEST_URI'] . '&ls=' . $loginscript . '"><img src="' . plugins_url( 'images/fb_login.png' , __FILE__ ) . '" width="240" height="30" alt="" /></a>'; } } else { // No user, print a link for the user to login return '<a href="' . $loginscript . '?redirect=1&site=' . site_url() . '&pp=' . $_SERVER['REQUEST_URI'] . '&ls=' . $loginscript . '"><img src="' . plugins_url( 'images/fb_login.png' , __FILE__ ) . '" width="240" height="30" alt="" /></a>'; } } add_shortcode( 'fcmreg', 'fcm_fb' ); 

?> `

fblogin.php

`

 $config = array( 'appId' => '###################', 'secret' => '###################', 'allowSignedRequest' => false // optional but should be set to false for non-canvas apps ); $redirect = $_GET['redirect']; $site = $_GET['site']; $pagepath = $_GET['pp']; $ls = $_GET['ls']; if(isset($_GET['error'])){ header("Location: " . $site . $pagepath); exit; } $facebook = new Facebook($config); $user_id = $facebook->getUser(); // If redirect is one, then this is for regular user registration // if redirect is two, then this is for coach registration if($redirect == 1){ $params = array( 'scope' => 'email', 'redirect_uri' => $ls . '?redirect=' . $redirect . '&site=' . $site . '&pp=' . $pagepath . '&ls=' . $ls ); } elseif($redirect == 2) { $params = array( 'scope' => 'email, user_online_presence, create_event, manage_friendlists, publish_actions, manage_pages', 'redirect_uri' => $ls . '?redirect=' . $redirect . '&site=' . $site . '&pp=' . $pagepath . '&ls=' . $ls ); } $login_url = $facebook->getLoginUrl($params); if($user_id) { // We have a user ID, so probably a logged in user. // If not, we'll get an exception, which we handle below. try { header("Location: " . $site . $pagepath); } catch(FacebookApiException $e) { // If the user is logged out, you can have a // user ID even though the access token is invalid. // In this case, we'll get an exception, so we'll // just ask the user to login again here. header("Location: " . $login_url); error_log($e->getType()); error_log($e->getMessage()); } } else { // No user, print a link for the user to login header("Location: " . $login_url); } 

?> `

fblogout.php

`

 $config = array( 'appId' => '################', 'secret' => '################', 'allowSignedRequest' => false // optional but should be set to false for non-canvas apps ); $ls = $_GET['ls']; $site = $_GET['site']; $pagepath = $_GET['pp']; $final = $_GET['final']; $facebook = new Facebook($config); $params = array('next' => $ls . '?final=1&ls=' . $ls . '&site=' . $site . '&pp=' . $pagepath); $logoutUrl = $facebook->getLogoutUrl($params); if($final == 0){ header("Location: " . $logoutUrl); } if($final == 1){ $facebook -> destroySession(); header("Location: " . $site . $pagepath); } 

?> `