我正在尝试使用带有CURL的HTTP API更新soundcloud轨道详细信息。我通过我的客户端ID时收到401 Unauthorized错误作为响应。
PUT https://api.soundcloud.com/tracks/11111111?client_id=12345666666
回复是
{
"errors": [
{
"error_message": "401 - Unauthorized"
}
]
}
还想知道我是否可以通过请求传递access_token。
答案 0 :(得分:1)
如果您想传递令牌,只需附加“& oauth_token =”+ TOKEN_VALUE
https://api.soundcloud.com/tracks/11111111?client_id=12345666666&oauth_token=YOUR_TOKEN
已编辑添加示例代码
以下是使用Curl&amp ;;的 PUT 的示例使用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...
}
答案 1 :(得分:0)
这可能有用。尝试关闭各种CURL选项。在我的情况下,我让PUT在PHP5.5下工作,但是在使用PHP7迁移到新服务器之后,POST操作将失败,直到我将curcloud POST操作的CURLOPT_SAFE_UPLOAD设置为false(文件上传);然而,在对我的所有curl inits进行此更改后,我的PUT操作失败,因为它们也将safeupload设置为false,因此我从PUT操作中删除了此设置,并且PUT操作开始工作。
简而言之,请尝试关闭PUT操作的SAFE UPLOAD选项。
this post上有关此curl选项的详细信息。