예제 #1
0
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');
}
예제 #2
0
 $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);