Я пытаюсь отобразить виджет SoundCloud HTML5 с использованием PHP API, но каждый раз, когда я запускаю команду, я думаю, должен вернуть HTML-код для виджета, я просто получаю исключение:
The requested URL responded with HTTP code 302
Я понимаю, что это перенаправление. Я не знаю, почему это все, что я когда-либо получал, или что с этим делать, чтобы на самом деле получить виджет HTML.
В документации по API говорится, что для встраивания виджета с использованием PHP вы должны это сделать:
<?php require_once 'Services/Soundcloud.php'; // create a client object with your app credentials $client = new Services_Soundcloud('YOUR_CLIENT_ID', 'YOUR_CLIENT_SECRET'); // get a tracks oembed data $track_url = 'http://soundcloud.com/forss/flickermood'; $embed_info = $client->get('/oembed', array('url' => $track_url)); // render the html for the player widget print $embed_info['html'];
Я запускаю это:
// NB: Fully authorised SoundCloud API instance all working prior to this line // $this->api refers to an authorised instance of Services_Soundcloud try { $widget = array_pop( json_decode( $this->api->get('oembed', array('url' => $track_url)) ) ); print_r($widget); } catch (Exception $e) { print_r($e->getMessage()); }
где «track_url» на самом деле является URL-адресом, который я возвращаю при запросе SoundCloud для объекта дорожки ранее в приложении, используя тот же API.
Я на самом деле не уверен, что этот URL-адрес правильный, в первую очередь, потому что объект трека, который я возвращаю, дает «uri» в форме:
[uri] => https://api.soundcloud.com/tracks/62556508
Все примеры документации имеют прямой URL-адрес http://soundcloud.com/username/track-permalink, но даже с использованием известного пути к общедоступному треку попытка запуска API-метода oembed не работает … Я все еще получаю исключение 302 ,
Наконец, есть упоминания об установке «allow_redirects» в false в команде «get», но это не имеет никакого эффекта, когда я добавляю к параметрам, используемым для построения запроса к API. Я также попытался добавить дополнительные опции cURL, но это тоже не повлияло.
Я определенно включил доступ API к треку в SoundCloud.
Это ударило головой о стену. Если у кого есть какие-то указатели, я был бы очень благодарен их услышать. Для ясности я могу получить доступ ко всем пользовательским данным, комментариям и т. Д. Через экземпляр API, который я создал, поэтому он работает нормально.
Спасибо за указание на это. В документации была ошибка, из-за которой вы сбились с пути. Извини за это. Я обновил документы, чтобы исправить ошибку. Вот обновленный пример кода:
<?php require_once 'Services/Soundcloud.php'; // create a client object with your app credentials $client = new Services_Soundcloud('YOUR_CLIENT_ID', 'YOUR_CLIENT_SECRET'); $client->setCurlOptions(array(CURLOPT_FOLLOWLOCATION => 1)); // get a tracks oembed data $track_url = 'http://soundcloud.com/forss/flickermood'; $embed_info = json_decode($client->get('oembed', array('url' => $track_url))); // render the html for the player widget print $embed_info->html;
Обратите внимание на различия:
$client->get
in json_decode
stdClass
, а не Array
поэтому для доступа к свойству html
необходимо использовать оператор ->
. Надеюсь, это поможет. Не стесняйтесь комментировать, если у вас все еще есть проблемы, и я исправлю свой ответ.