Intereting Posts
выполнить программу c ++ с помощью php-скрипта CodeIgniter Включение строк запроса Почему PHP назначает контекст вызову статического метода и не дает уведомления E_STRICT? Пользовательский селектор выпадающего меню, отображающий или скрывающий другие настраиваемые поля Checkout Как получить вывод PHP в переменную? Как защитить файл php Что такое PHPSESSID? PHP fwrite новая строка Объект класса mysqli_result не может быть преобразован в строку в Как найти место по умолчанию при некорректном значении GET с использованием заголовков Как определить «Google Chrome» в качестве пользовательского агента с помощью PHP? Как безопасно отправлять баллы из приложения, которое использует только вход в facebook? Как реализовать динамические бизнес-объекты / данные? Нестатический метод mysqli :: init () нельзя назвать статическим Справка по рекурсии PHP, необходимая для создания древовидной структуры

Рендеринг виджета SoundCloud для частного трека с использованием PHP API

Я пытаюсь отобразить виджет 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, который я создал, поэтому он работает нормально.

Related of "Рендеринг виджета SoundCloud для частного трека с использованием PHP 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; 

Обратите внимание на различия:

  • Вы должны установить CURLOPT_FOLLOWLOCATION в 1, как указано в комментариях выше.
  • Вам нужно обернуть возврат из $client->get in json_decode
  • Результатом является объект stdClass , а не Array поэтому для доступа к свойству html необходимо использовать оператор -> .

Надеюсь, это поможет. Не стесняйтесь комментировать, если у вас все еще есть проблемы, и я исправлю свой ответ.