static function Facebook_login() { header('Content-type: text/plain'); try { // Check token $url = 'https://graph.facebook.com/v2.2/' . $_REQUEST['uid']; $url = apply_filters('al2fb_url', $url); $query = http_build_query(array('access_token' => $_REQUEST['token']), '', '&'); $response = WPAL2Int::Request($url, $query, 'GET'); $me = json_decode($response); // Workaround if no e-mail present if (!empty($me) && empty($me->email)) { $users = get_users(array('meta_key' => c_al2fb_meta_facebook_id, 'meta_value' => $me->id)); if (count($users) == 0) { $regurl = get_user_meta($_REQUEST['user'], c_al2fb_meta_login_regurl, true); if (!empty($regurl)) { wp_redirect($regurl); } } else { if (count($users) == 1) { $me->email = $users[0]->user_email; } } } // Check Facebook user if (!empty($me) && !empty($me->id)) { // Find user by Facebook ID $users = get_users(array('meta_key' => c_al2fb_meta_facebook_id, 'meta_value' => $me->id)); // Check if found one if (count($users) == 1) { // Try to login $user = WPAL2Int::Login_by_email($users[0]->user_email, true); // Check login if ($user) { // Persist token update_user_meta($user->ID, c_al2fb_meta_facebook_token, $_REQUEST['token']); update_user_meta($user->ID, c_al2fb_meta_facebook_token_time, time()); // Redirect $self = (is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_REQUEST['uri']; $redir = get_user_meta($_REQUEST['user'], c_al2fb_meta_login_redir, true); wp_redirect($redir ? $redir : $self); } else { // User not found (anymore) header('Content-type: text/plain'); _e('User not found', c_al2fb_text_domain); echo PHP_EOL; if (get_option(c_al2fb_option_debug)) { print_r($me); } } } else { $self = (is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_REQUEST['uri']; $regurl = get_user_meta($_REQUEST['user'], c_al2fb_meta_login_regurl, true); wp_redirect($regurl ? $regurl : $self); } } else { // Something went wrong header('Content-type: text/plain'); _e('Could not verify Facebook login', c_al2fb_text_domain); echo PHP_EOL; if (get_option(c_al2fb_option_debug)) { print_r($_REQUEST); print_r($response); } } } catch (Exception $e) { // Communication error? header('Content-type: text/plain'); _e('Could not verify Facebook login', c_al2fb_text_domain); echo PHP_EOL; echo $e->getMessage(); echo PHP_EOL; } }