#php #vimeo #vimeo-api
#php #vimeo #vimeo-api
Вопрос:
Я использую официальный PHP-клиент Vimeo.
Я могу загрузить видео и установить privacy.embed
значение whitelist
.
Затем док говорит мне:
Чтобы добавить домен в белый список, отправьте
PUT
запрос на/videos/{video_id}/privacy/domains/{domain}
.
Я пытался
$privacy_uri = $uri . "/privacy/domains/testdomain.tld";
$domain_add_response = $client->request($privacy_uri);
где
— $uri
является ли /vimeo/<video_id>
— $client
рождается из new Vimeo(CLIENT_ID, CLIENT_SECRET, VIMEO_TOKEN);
Проблема
При печати $domain_add_response
я получаю 405
сообщение об ошибке, вероятно, из-за Allow
(см. Следующий дамп ответа)
Array
(
[body] =>
[status] => 405
[headers] => Array
(
[Server] => nginx
[Content-Type] => application/json
[Allow] => PUT,DELETE,OPTIONS
[X-Vimeo-DC] => ge
[Accept-Ranges] => bytes
[Via] => 1.1 varnish
[Content-Length] => 0
[Date] => Mon, 15 Apr 2019 08:30:47 GMT
[Connection] => keep-alive
[X-Served-By] => cache-bwi5125-BWI, cache-mxp19820-MXP
[X-Cache] => MISS, MISS
[X-Cache-Hits] => 0, 0
[X-Timer] => S1555317047.232635,VS0,VE148
[Vary] => Accept-Encoding
)
)
Я полагаю, я должен установить PUT
метод в своем запросе, но … как?
Комментарии:
1. Используете ли вы CURL для запросов? Можете ли вы показать нам код, который делает запрос?
2. Запрос делает не код.
3. @AndreiLupuleasa:
$domain_add_response = $client->request($privacy_uri);
точный ли код делает запрос!4. И как мы узнаем, какой
->request
метод выполняет и какие параметры принимает?5. $client, как указано в вопросе, является официальным php-клиентом Vimeo. Исходный код здесь:
https://github.com/vimeo/vimeo.php/blob/master/src/Vimeo/Vimeo.php#L88
Ответ №1:
Решение найдено при просмотре исходного кода api: https://github.com/vimeo/vimeo.php/blob/master/src/Vimeo/Vimeo.php#L88
где подпись request
public function request($url, $params = array(), $method = 'GET', $json_body = true, array $headers = array()): array
Я понимаю, что могу решить проблему, просто передав пустой $params
массив и PUT
указав в качестве запроса $method
Я изменил эту строку
$domain_add_response = $client->request($privacy_uri);
В эту форму
$domain_add_response = $client->request($privacy_uri, [], 'PUT');
И это работает, как ожидалось