2014-02-20 3 views
0

Я пытаюсь настроить простое приложение, которое должно:Soundcloud решительность на PHP

  • получить идентификатор клиента художника из его URL
  • дисплей двух последних дорожек

Однако Я не так практичен с soundcloud, и я просто знаю базовый php. Я начал играть со звуком, но я не мог справиться с этим. Проблема у меня есть, что любой код, который я пишу, он получает

Fatal error: Uncaught exception 'Services_Soundcloud_Invalid_Http_Response_Code_Exception' with message 'The requested URL responded with HTTP code 302.'

Самый простой настройки прямо из документации и является примером для получения комментариев от идентификатора дорожки, начиная с поддавки URL.

<?php 
require_once 'Services/Soundcloud.php'; 

// create a client object with your app credentials 
$client = new Services_Soundcloud('my_client','my_secret'); 

// a permalink to a track 
$track_url = 'https://url_to_a_track'; 

// resolve track URL into track resource 
$track = json_decode($client->get('resolve', array('url' => $track_url), array('CURLOPT_FOLLOWLOCATION', TRUE))); 

// now that we have the track id, we can get a list of comments, for example 
foreach (json_decode($client->get('tracks/' . $track->id . 'comments')) as $c) 
print 'Someone said: ' . $c->body . ' at ' . $c->timestamp . "\n"; ?> 

Просто добавил ('CURLOPT_FOLLOWLOCATION', TRUE), потому что я читал об этом по Сети ... И я всегда получаю фатальную ошибку ... почему?

ответ

0

Я смог его решить. Если ресурсы общедоступны, вам не нужно аутентифицироваться. Вот код, который:

  • Получить пользовательский URL из WordPress пользовательского поля
  • Получить идентификатор от объекта JSon
  • Получить последние 2 дорожки и дисплей 2 встроенных проигрывателях

Это просто нужно ваш собственный идентификатор клиента, который вы можете легко получить, зарегистрировавшись в разделе разработчиков soundcloud, а затем замените его на {Your_ID}

// get user URL from Wordpress custom field 
    $sc_url = get_post_meta(get_the_id(), 'sc_url', true); 

    // if $sc_url is not empty, do 
    if (!empty($sc_url)) { 

    $unparsed_json = file_get_contents('https://api.soundcloud.com/resolve.json?url='.$sc_url.'&client_id={Your_ID}'); 

    $json_object = json_decode($unparsed_json); 

    // retrieve the user ID from json_object 
    $roster_id = $json_object->{'id'}; 

    // get last two tracks from the user and generate embed code for each tracks 
    $tracks_json = file_get_contents('http://api.soundcloud.com/users/'.$roster_id.'/tracks?client_id={Your_ID}&order=latest&limit=2&format=json'); 
    $tracks = json_decode($tracks_json); 
    foreach ($tracks as $track){ 
    $trackID = $track->id; 
    echo '<iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F'.$trackID.'"></iframe>'; 
    }} 

Надеюсь, что это может помочь другим :)

1

«Как я могу использовать ресурс API разрешения soundcloud с помощью PHP?»

  • использовать решимость ресурс в SoundCloud API с PHP, следующий код frafor, сделайте:

    $client->setCurlOptions(array(CURLOPT_FOLLOWLOCATION => 1)); $response = json_decode($client->get('resolve',array('url' => $track_url))); >

Так первый CURLOPT_FOLLOWLOCATION, а затем вызов API, ваш, где почти там! :) Надеюсь, это поможет кому-то!

Приветствия, Т

1

на SoundCloud серверы перешли на безопасный и они теперь используют HTTPS протокол для API/JSON, а также.

Мои приложения больше не работали, так что это другие опции cURL для получения JSON. Проверка SSL должна быть отключена. Я заработал только с этим.

// Configuring curl options 
$options = array(
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_HTTPHEADER => array('Content-type: application/json'), 
    CURLOPT_SSL_VERIFYHOST => 0, 
    CURLOPT_SSL_VERIFYPEER => 0, 
); 

Надеюсь, это поможет.

Смежные вопросы