我正在尝试设置一个简单的应用程序:
然而,我对soundcloud不太实用,我只知道基本的php。我开始玩soundcloud,但我无法处理它。我遇到的一个问题是我写的任何代码,它都是
Fatal error: Uncaught exception 'Services_Soundcloud_Invalid_Http_Response_Code_Exception' with message 'The requested URL responded with HTTP code 302.'
最简单的设置直接来自文档,并且是从给定URL开始从轨道ID中检索注释的示例。
<?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 :(得分:1)
&#39;如何在PHP中使用soundcloud API解析资源?&#39;
使用php的soundcloud API的 resolve 资源,按照frafor的代码,执行:
$client->setCurlOptions(array(CURLOPT_FOLLOWLOCATION => 1));
$response = json_decode($client->get('resolve',array('url' => $track_url)));
?&GT; 首先是CURLOPT_FOLLOWLOCATION然后是API调用,你几乎就在那里! :) 希望它可以帮助别人!
干杯, Ť
答案 1 :(得分:1)
soundcloud服务器已切换到安全状态,他们现在也使用https协议进行API / JSON。
我的应用程序不再工作,所以这些是获取JSON的其他cURL选项。 SSL验证必须都设置为禁用。我只有这个才能使用它。
// Configuring curl options
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array('Content-type: application/json'),
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
);
希望它有所帮助。
答案 2 :(得分:0)
我已经能够解决它了。如果资源是公共的,那么您不需要进行身份验证。这是代码:
只需要通过在soundcloud开发者部分注册,然后将其替换为{Your_ID}
,您就可以轻松获得自己的客户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>';
}}
希望它可以帮助别人:)