2016-03-14 8 views
2

Я пытаюсь обновить данные трека soundcloud, используя HTTP API с CURL. Я получаю ошибку 401 Unauthorized в качестве ответа, хотя я передал свой идентификатор клиента.Soundcloud PUT API возвращает 401

PUT https://api.soundcloud.com/tracks/11111111?client_id=12345666666

Отклик

{ 
    "errors": [ 
    { 
     "error_message": "401 - Unauthorized" 
    } 
    ] 
} 

интересно Кроме того, если я могу передать access_token с запросом.

ответ

1

Если вы хотите передать свой маркер, просто добавьте "& oauth_token =" + TOKEN_VALUE

https://api.soundcloud.com/tracks/11111111?client_id=12345666666&oauth_token=YOUR_TOKEN

Edited добавить пример кода

Вот пример PUT с использованием Curl & с PHP для токена громкоговорителя soundcloud. Этот код выполнен из рабочего проекта soundcloud.

$data = array(
    'code' => $token, 
    'client_id' => $this->getClientId(false), // your client ID 
    'client_secret' => $this->getClientSecret(), // your client secret 
    'redirect_uri' => $this->getCallback(), // callback URL 
    'grant_type' => 'authorization_code' 
); 
$url = "https://api.soundcloud.com/oauth2/token"; 
try { 
    $ch = curl_init(); 
    // set options 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
    curl_setopt($ch, CURLOPT_VERBOSE, 1); 
    $response = curl_exec($ch); 
    $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); 
    $header = substr($response, 0, $header_size); 
    $body = substr($response, $header_size);  
    // read/process result 
    curl_close($ch); 
} catch(Exception $e) { 
    // error handling... 
} 
+0

Спасибо, но он не работает для меня, показывая ошибку 401. –

0

Это может сработать. Попробуйте отключить различные опции CURL. В моем случае у меня была PUT, работающая под PHP5.5, но после перехода на новый сервер с PHP7 операция POST завершилась неудачно, пока я не установил значение CURLOPT_SAFE_UPLOAD в false для работы POST-файлов soundcloud (загрузка файлов); однако после внесения этого изменения во все мои завивки мои операции PUT завершились неудачно, потому что они также установили safeupload в значение false, поэтому я удалил этот параметр из своих операций PUT и начал работать PUT.

Короче говоря, попробуйте отключить опцию SAFE UPLOAD для ваших операций PUT.

Дополнительная информация об этом варианте свернуть на this post.

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