Vimeo API — генерировать токен без аутентификации с помощью WP HTTP API

Я пытаюсь получить токен без аутентификации из текущего API Vimeo v3, чтобы использовать его, чтобы получить простой список моих собственных видео на моем собственном сайте. Я использую функцию WordPress HTTP API ‘wp_remote_post’ для генерации правильного http-запроса.

Согласно Vimeo, это правильный способ сделать это, и это делается с помощью запроса POST. Вот аргументы:

HTTP Method: POST
HTTP URL: api.vimeo.com/oauth/authorize/client
HTTP Headers: Authorization: basic, base64_encode( "$client_id: $client_secret" )
Request Body: grant_type=client_credentials&scope=public%20private

введите описание изображения здесь

и получать

[body] => {"error":"You must provide a valid authenticated access token."}
[raw] => HTTP/1.1 401 Authorization Required

Почему Vimeo запрашивает действительный токен аутентифицированного доступа для явно не аутентифицированного вызова? Я предоставил действительный идентификатор клиента и секрет клиента из моего приложения Vimeo, используя инструкции Vimeo для Получать неаутентифицированное токен доступа. Я отправляю запрос из моего местного окружения.

Я проверил подобный вопрос Как сгенерировать токен неаутентифицированного доступа Vimeo? и следовали всему изложенному там. Никаких кубиков, и я пытался делать это часами.

0

Решение

Vimeo API, кажется, принимает параметры только как часть строки запроса, не как часть объекта HTTP POST («тело», «данные» или другие).

Только когда я закодировал параметры непосредственно в URL, вместо того, чтобы передавать их как параметры в объекте post, публикация работала.

Работает:

$url = 'https://api.vimeo.com/oauth/authorize/client?grant_type=client_credentials&scope=public%20private';
$auth = base64_encode( $developer_key . ':' . $secret_key );
$headers = array(
'Authorization' => 'Basic ' . $auth,
'Content-Type' => 'application/json'
);
$args = array(
'headers'     => $headers
);
$response = wp_remote_post( $url, $args );

Не работает:

$url = 'https://api.vimeo.com/oauth/authorize/client';
$auth = base64_encode( $developer_key . ':' . $secret_key );
$data = array(
'grant_type' => 'client_credentials',
'scope' => 'public private'
);
$headers = array(
'Authorization' => 'Basic ' . $auth,
'Content-Type' => 'application/json'
);
$args = array(
'headers'     => $headers,
'data'        => $data
);

Хммм. Начиная с WordPress 4.6, класс WP_HTTP теперь построен на Запросы Райан МакКью.

Так что, похоже, мой вопрос на самом деле также вопрос о том, как wp_remote_post () создает запрос. Кажется, что нет способа передать параметры в функцию и привести их в строковое значение в URL.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]