Я создаю страницу, на которой вы можете войти в систему со своим звуковым облаком и получить доступ к загрузке моих песен, если вы подписаны на меня в звуковом облаке. У меня работает аутентификация, но я не могу понять следующую часть. Я в значительной степени скопировал и вставил примеры с веб-сайта разработчиков Soundcloud в раздел «Нравится» и «Следуйте», и он не работает так, как предполагалось. При попытке try создается впечатление, что я не слежу за своей основной учетной записью (которую я получил по идентификатору пользователя # при тестировании шага аутентификации), даже если я захожу на soundcloud, на свою тестовую учетную запись и следую за своей основной учетной записью. Вот ошибка, которую я получаю:
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 636Notice: Undefined variable: postData in /my_website/Services/Soundcloud.php on line 642Fatal 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
вот код, который я запускаю:
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 init и followings / ##### были изменены для защиты моей информации.
после многих исследований и проб и ошибок, если выяснилось, что установка пути к:
https://api.soundcloud.com/me/followings/#######?oauth_token=MY_TOKEN
похоже на работу. Я не знаю, является ли это просто обходным путем или как API должен был использоваться, но это единственный способ, которым я мог заставить его работать, я предполагал, что клиентский объект soundcloud автоматически отправлял токен с командой, но он появляется не.
Я также выяснил, что если он находит совпадение (пользователь следует по номеру идентификатора), то он возвращает ошибку 303, которую руководство api даже не перечисляет в своих кодах ошибок http.
У вас есть косая черта перед me
который не должен быть там. Следующие работы для меня:
$soundcloud->put('me/followings/#########','',array(CURLOPT_HTTPHEADER => array('Content-Type: application/xml')));