Soundcloud API错误401,当我使用令牌之后,我得到它之后

时间:2012-04-13 13:19:00

标签: soundcloud

我想了解为什么我得到“请求的URL以HTTP代码401响应”。当我尝试用访问令牌进行描述时。

奇怪的是,当我从用户那里获得access_token(session)之后我就这样做了,但是当我存储令牌并尝试稍后启动相同的代码时,它会失败!

显然,令牌存在问题,因为我可以在没有令牌的情况下访问soundcloud描述,但如果我使用此方法:$ soundcloud-> setAccessToken($ token);在获取曲目数据之前,我再也无法访问它们了......

以下是代码:

require_once 'soundcloud/Soundcloud.php';
$soundcloud = new Services_Soundcloud(SOUNDCLOUD_CLIENT_ID, SOUNDCLOUD_CLIENT_SECRET, SOUNDCLOUD_REDIRECT_URI);
$soundcloud->setAccessToken($session_token);
try
{
    $track = json_decode($soundcloud->get('tracks/'.$media_id), true);
}
catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e)
{
    exit($e->getMessage());
}
try
{
    $response = json_decode($soundcloud->put(
                                     'tracks/'.$media_id,
                                              'test',
                                               array(CURLOPT_HTTPHEADER => array('Content-Type: application/xml'))), true);
}
catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e)
{
    exit($e->getMessage());
}

此代码在我刚获得令牌时有效,但如果我几天后启动它就会失败...

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

此示例中来自$ session_token的位置是什么?根据您生成访问令牌的方式,发生以下两种情况之一:

  1. 您没有发送正确的访问令牌。
  2. 您发送的访问令牌已过期。
  3. 如果是2,那么当用户授权您的应用时,您应该获得刷新令牌。 PHP SoundCloud SDK有一个accessTokenRefresh()方法,您可以在此方案中使用该方法。

答案 1 :(得分:1)

您需要一个非过期令牌。

授权时,参数scope默认为"*"

指定范围并检索令牌,如下所示:

$soundcloud->getAuthorizeUrl(array('scope'=>'non-expiring'))

请参阅:http://developers.soundcloud.com/docs/api/reference#connect

(很老的问题,但是我自己也遇到了这个问题。当令牌过期时,你没有得到API的反馈,然后401错误,让你陷入黑暗。)