Intereting Posts
add_action hook для страницы links.php Используйте Gravatar в качестве резервного изображения, если локальное изображение не найдено Получить ссылку из wpe_excerpt "читать дальше" и переместить ее Верхняя панель администратора не отображается на лицевой стороне Пользовательский пул в URL для CPT и таксономии Обновление настраиваемых полей с данными из базы данных Как вставить путь изображения в базу данных для отображения изображения продукта в wp-admin? PHP-скрипт из функций php загружается через admin-ajax в div … и результат равен 0, а не желаемый контент Идентификация приоритета style.css, чтобы я мог сделать небольшую загрузку файла CSS последним Добавление wp_link_pages к теме, которая, как представляется, отсутствует? Как изменить запрос для исключения сообщений путём? Доступ к подкаталогам в WordPress Install Где передается ключ _wp_page_template? Важные проблемы с заголовком на мобильных устройствах Как создать сайт wordpress, который будет иметь сервисы и продукты на основе местоположения?

Facebook OAuth, WP_Http :: request () vs wp_remote_request ()

Запуск WordPress 3.3.2 и PHP версии 5.2.17

Я пытаюсь получить access_token из Facebook с помощью wp_remote_request () и Facebook OAuth API (btw, рабочий пример в конце этой записи).

Есть ли причина, по которой это не работает (должно быть в соответствии с документом и исходным кодом) ?:

$response = wp_remote_request('https://graph.facebook.com/oauth/access_token', array( 'timeout' => 60, 'sslverify' => false, 'method' => 'GET', 'body' => array( 'client_id' => FACEBOOK_APPID, 'client_secret' => FACEBOOK_APPSECRET, 'redirect_uri' => REDIRECTURI, 'code' => $_GET['code'] ) )); 

Когда это делает ?:

 $http = new WP_Http; $api_url = sprintf("https://graph.facebook.com/oauth/access_token?client_id=%s&redirect_uri=%s&client_secret=%s&code=%s", urlencode(FACEBOOK_APPID), urlencode(REDIRECTURI), urlencode(FACEBOOK_APPSECRET), urlencode($_GET['code']) ); $response = $http->request($api_url, array('timeout' => 60, 'sslverify' => false)); 

Рабочий пример:

 <?php /* Short and sweet */ define('WP_USE_THEMES', false); require('../wp-blog-header.php'); ?> <?php define('FACEBOOK_APPID','123'); // replace 123 with your app id define('FACEBOOK_APPSECRET','abc'); // replace abc with your app secret define('REDIRECTURI','http://your.redirect.url'); if ($_GET['code'] != '') { if ($_GET['state'] != '' && wp_verify_nonce($_GET['state'], 'my-nonce')) { $http = new WP_Http; $api_url = sprintf("https://graph.facebook.com/oauth/access_token?client_id=%s&redirect_uri=%s&client_secret=%s&code=%s", urlencode(FACEBOOK_APPID), urlencode(REDIRECTURI), urlencode(FACEBOOK_APPSECRET), urlencode($_GET['code']) ); $response = $http->request($api_url, array('timeout' => 60, 'sslverify' => false)); if( is_wp_error( $response ) ) { echo 'ERROR'; } else { $args = wp_parse_args( wp_remote_retrieve_body($response), array() ); echo $args['access_token']; } } } else { $facebook_dialog_url = sprintf("https://www.facebook.com/dialog/oauth?client_id=%s&redirect_uri=%s&state=%s", FACEBOOK_APPID, urlencode(REDIRECTURI), wp_create_nonce ('my-nonce') ); echo '<a href="'. $facebook_dialog_url .'">LOGIN TO FACEBOOK</a> <br />'; } ?> 

Solutions Collecting From Web of "Facebook OAuth, WP_Http :: request () vs wp_remote_request ()"

Чтобы ответить на мой собственный вопрос, когда вы используете WP_Http, используемый транспорт в этом порядке выбирается из этого массива: $request_order = array( 'curl', 'streams', 'fsockopen' );

Если ваш PHP поддерживает завиток, используется WP_Http_Curl. Curl не поддерживает добавление параметров массива тела, когда метод GET

WP_Http_Streams и WP_Http_Fsockopen, с другой стороны, добавьте параметры массива body.

аргумент body используется для запросов POST и устанавливается в заголовках. Для запроса запроса GET кодировать аргументы запроса в URL (как и во втором фрагменте).