function set_longlived_token() { $config = get_facebook_config(); $fb = get_fb_variable(); $helper = $fb->getRedirectLoginHelper(); try { $accessToken = $helper->getAccessToken(); } catch (Facebook\Exceptions\FacebookResponseException $e) { // When Graph returns an error echo 'Graph returned an error: ' . $e->getMessage(); exit; } catch (Facebook\Exceptions\FacebookSDKException $e) { // When validation fails or other local issues echo 'Facebook SDK returned an error: ' . $e->getMessage(); exit; } if (!isset($accessToken)) { if ($helper->getError()) { header('HTTP/1.0 401 Unauthorized'); echo "Error: " . $helper->getError() . "\n"; echo "Error Code: " . $helper->getErrorCode() . "\n"; echo "Error Reason: " . $helper->getErrorReason() . "\n"; echo "Error Description: " . $helper->getErrorDescription() . "\n"; } else { header('HTTP/1.0 400 Bad Request'); echo 'Bad request'; } exit; } // Logged in // echo '<h3>Access Token</h3>'; // var_dump($accessToken->getValue()); // The OAuth 2.0 client handler helps us manage access tokens $oAuth2Client = $fb->getOAuth2Client(); // Get the access token metadata from /debug_token $tokenMetadata = $oAuth2Client->debugToken($accessToken); // echo '<h3>Metadata</h3>'; // var_dump($tokenMetadata); // Validation (these will throw FacebookSDKException's when they fail) $tokenMetadata->validateAppId($config['app_id']); // If you know the user ID this access token belongs to, you can validate it here // $tokenMetadata->validateUserId('123'); $tokenMetadata->validateExpiration(); if (!$accessToken->isLongLived()) { // Exchanges a short-lived access token for a long-lived one try { $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken); } catch (Facebook\Exceptions\FacebookSDKException $e) { echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>"; exit; } // echo '<h3>Long-lived</h3>'; // var_dump($accessToken->getValue()); // $accessToken->getValue() update_field('field_55a00fafd42fa', $accessToken->getValue(), 'options'); } update_field('field_55a00fafd42fa', $accessToken->getValue(), 'options'); $_SESSION['fb_access_token'] = (string) $accessToken; $protocol = !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443 ? "https://" : "http://"; $url_to_redirect_to = $protocol . $_SERVER['SERVER_NAME']; header('Location: ' . $url_to_redirect_to . '/?fb_auth=get_page'); }
$fb_login_copy_step_two = 'If you need a new token, <a href="%login_url%">log in with Facebook!</a>'; $fb_login_copy_step_three = 'Done! You can use Facebook in your code now. '; $query = 'SELECT `wp_options`.`option_value` FROM `wp_options` '; $fb_app_id_query = $query . 'WHERE `wp_options`.`option_name` = "options_sdo_api_facebook_app_id" '; $fb_app_secret_query = $query . 'WHERE `wp_options`.`option_name` = "options_sdo_api_facebook_app_secret" '; $fb_app_token_query = $query . 'WHERE `wp_options`.`option_name` = "options_sdo_api_facebook_app_token" '; $fb_page_token_query = $query . 'WHERE `wp_options`.`option_name` = "options_sdo_api_facebook_page_token" '; $fb_app_id = $wpdb->get_var($fb_app_id_query); $fb_app_secret = $wpdb->get_var($fb_app_secret_query); $fb_app_token = $wpdb->get_var($fb_app_token_query); $fb_page_token = $wpdb->get_var($fb_page_token_query); if ($fb_app_id !== null && $fb_app_secret !== null && $fb_app_token !== null) { $facebook_message = str_replace('%step_1_content%', '<del>%step_1_content%</del>', $facebook_message); } if ($fb_app_id !== null && $fb_app_secret !== null) { $fb = get_fb_variable(); $fb_helper = $fb->getRedirectLoginHelper(); $fb_permissions = ['email', 'manage_pages']; $fb_loginUrl = $fb_helper->getLoginUrl($protocol . $_SERVER['SERVER_NAME'] . '/facebook', $fb_permissions); $fb_loginUrl = htmlspecialchars($fb_loginUrl); $facebook_message = str_replace('%step_1_content%', '<del>' . $fb_login_copy_step_one . '<del>', $facebook_message); } else { $fb_loginUrl = "#"; $facebook_message = str_replace('%step_1_content%', $fb_login_copy_step_one, $facebook_message); $facebook_message = str_replace('%step_2_content%', '<span style="opacity: 0.25;">%step_2_content%</span>', $facebook_message); } if ($fb_app_token == null && $fb_page_token == null) { $facebook_message = str_replace('%step_3_content%', '<span style="opacity: 0.25;">%step_3_content%</span>', $facebook_message); } else { $facebook_message = str_replace('%step_2_content%', '<del>%step_2_content%</del>', $facebook_message); $facebook_message = str_replace('%step_3_content%', '%step_3_content% This token will expire on <strong>%token_expiration_date%</strong>. Renew it by <a href="' . $fb_loginUrl . '">clicking here</a>. ', $facebook_message);