Intereting Posts
Не удается подключиться к GMail SMTP (PHPMailer) – проверка сертификата не выполнена Zend_Db без Zend Framework «извините, что произошла ошибка» при интеграции платежного шлюза PayUMoney в тестовом режиме Сокращение строки с … на конце Localhost не отображает те же компоненты, что и на сервере. Мой php-скрипт для отправки формы не работает Настроить параметры выбора динамически на странице каталога в панели администратора Magento Как получить доступ к соединению mysqli в другом классе на другой странице? Symfony2 – запуск команды symfony2 простая связь клиентского сервера между java и php значение поиска многомерного массива и вернуть его ключ php как получить элементы из опции <datalist> в php Что такое регулярное выражение MM / DD / YYYY и как его использовать в php? openID с domain.mp Проблема с $ _POST, если isset () и mysql_fetch_assoc (): echo возвращает правильное значение, источник страницы всегда возвращает значение else

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); } 

?> `