2015-01-19 4 views
1

Я делаю страницу, на которой вы можете войти в систему со своим звуковым клубом и получить доступ к загрузке моих песен, пока вы следите за мной в soundcloud. Я работаю с аутентификацией, но не могу понять следующую часть. Я в значительной степени скопировал и вставлял примеры с сайта разработчиков soundcloud под похожим и последующим разделом, и он не работает и не работает, как его предполагалось. Попытка catch показывает, что я не следую своей основной учетной записи (которой я получил идентификатор пользователя от тестирования шага аутентификации), даже если я иду на soundcloud, на свою тестовую учетную запись и следую своей основной учетной записи. Здесь ошибка я получаю:soundcloud api php add follower

Warning: Missing argument 2 for Services_Soundcloud::put(), called in /my_website/index.php on line 43 and defined in /my_website/Services/Soundcloud.php on line 636 



Notice: Undefined variable: postData in /my_website/Services/Soundcloud.php on line 642 



Fatal error: Uncaught exception 'Services_Soundcloud_Invalid_Http_Response_Code_Exception' with message 'The requested URL responded with HTTP code 404.' in /my_website/Services/Soundcloud.php:941 
Stack trace: 
#0 /my_website/Services/Soundcloud.php(645): Services_Soundcloud->_request('https://api.sou...', Array) 
#1 /my_website/index.php(43): Services_Soundcloud->put('/me/followings/...') 
#2 {main} 
    thrown in my_website/Services/Soundcloud.php on line 941 

Heres код им работает:

require_once 'Services/Soundcloud.php'; 
//session_destroy(); 
session_start(); 

$soundcloud = new Services_Soundcloud(client_id, secret_id, redirect_uri) 
$authURL = $soundcloud->getAuthorizeUrl(); 

echo "<pre>"; 

if (!empty ($_SESSION['token'])){ 
     $soundcloud->setAccessToken($_SESSION['token']); 
} else if(!empty($_GET['code'])){ 
     try{ 
       $accessToken = $soundcloud->accessToken($_GET['code']); 
       $_SESSION['token'] = $accessToken['access_token']; 
       $soundcloud->setAccessToken($_SESSION['token']); 
     } catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) { 
       exit($e->getMessage()); 
     } 
} else { 
     echo "<a href='".$authURL."'><img border='0' alt='Connect with Soundcloud' src='connect.png'></a>"; 
} 

if (!empty ($_SESSION['token'])){ 
     // check the status of the relationship 
     echo $_SESSION['token']; 
     try { 
       $soundcloud->get('/me/followings/#######'); 
     } catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) { 
       if ($e->getHttpCode() == '404') 
         print "You are not following user #######\nTrying to follow now\n"; 
         $soundcloud->put('/me/followings/#######'); 
     } 
} 

ли примеры на SoundCloud неправильно или я делаю что-то неправильно, прежде чем я получаю в этих командах?

также обратите внимание, что мой объект soundcloud init и followings/##### был изменен для защиты моей информации.

+0

вы должны проверить свою переменную postData в soundcloud, что-то не так с вашей командой put. Btw. Я активно поддерживаю более объектно-ориентированную библиотеку для работы с soundcloud, если бы вы ее попробовали? http://www.github.com/njasm/soundcloud – njasm

+0

жаль, что не видел этого, пока я не нашел ответ .... и за два счета. Я определенно буду учитывать вашу библиотеку, когда в конечном итоге я столкнусь с другой проблемой. Спасибо! – erikstagg

+0

проблем нет, удачи! – njasm

ответ

0

после долгих исследований и проб и ошибок, если понял, что установка путь:

https://api.soundcloud.com/me/followings/#######?oauth_token=MY_TOKEN 

, кажется, работает. Я не знаю, было ли это всего лишь обходным путем или как API был предназначен для использования, но его единственный способ заставить его работать, я предполагал, что объект-клиент soundcloud автоматически отправил токен с помощью команды, но он появляется не.

Я также выяснил, что если он находит соответствие (пользователь следует за номером id), он возвращает ошибку 303, которую руководство api даже не перечисляет в своих кодах ошибок http.

0

У вас есть косая черта перед me, которого не должно быть. Следующие работы для меня:

$soundcloud->put('me/followings/#########','',array(CURLOPT_HTTPHEADER => array('Content-Type: application/xml')));