【问题标题】:Soundcloud API error 401 when i use a token later than just after i get it当我使用令牌时,Soundcloud API 错误 401 比我得到它之后
【发布时间】:2012-04-13 13:18:59
【问题描述】:

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

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

显然,令牌有问题,因为我可以在没有令牌的情况下访问 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());
}

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

感谢您的帮助!

【问题讨论】:

    标签: soundcloud


    【解决方案1】:

    在这个例子中 $session_token 是从哪里来的?根据您生成访问令牌的方式,会发生以下两种情况之一:

    1. 您没有发送正确的访问令牌。
    2. 您发送的访问令牌已过期。

    如果是 2,那么当用户授权您的应用时,您应该已经获得了一个刷新令牌。 PHP SoundCloud SDK 有一个 accessTokenRefresh() 方法,您可以在此场景中使用。

    【讨论】:

    • 您好,我在文档上看到您现在可以要求一个未过期的令牌,它解决了问题。感谢您的帮助!
    【解决方案2】:

    您需要一个不会过期的令牌。

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

    像这样指定范围并检索令牌:

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

    见:http://developers.soundcloud.com/docs/api/reference#connect

    (很老的问题,但我自己也遇到过这个问题。当令牌过期时,除了 401 错误之外,您不会从 API 获得反馈,让您一无所知。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-05
      • 2016-03-25
      • 1970-01-01
      • 2022-06-21
      • 1970-01-01
      • 2018-01-15
      • 2020-09-05
      • 2012-10-27
      相关资源
      最近更新 更多