2012-04-13 51 views
0

我想了解爲什麼我會得到「請求的URL使用HTTP代碼401響應」。當我嘗試把描述whith訪問令牌。Soundcloud API錯誤401當我使用令牌比剛剛獲得它之後

奇怪的想法是,當我從用戶那裏獲取access_token(session)後,它會正常工作,但是當我存儲該令牌並嘗試稍後啓動相同的代碼時,它會失敗!

可能會出現令牌問題,因爲我可以在沒有令牌的情況下訪問soundcloud描述,但是如果使用此方法:$ soundcloud-> setAccessToken($ token);越來越軌道DATAS之前,我不能訪問他們了......

下面是代碼:

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()); 
} 

此代碼的工作,當我剛剛得到的令牌,但失敗,如果我推出來了幾天後來...

感謝您的幫助!

回答

1

這個例子中的$ session_token來自哪裏?根據生成訪問令牌的方式,發生以下兩種情況之一:

  1. 您沒有發送正確的訪問令牌。
  2. 您發送的訪問令牌已過期。

如果它是2,當用戶授權您的應用程序時,您應該得到一個刷新標記。 PHP SoundCloud SDK有一個accessTokenRefresh()方法,您可以在這種情況下使用。

+0

你好, 我看到在文檔,你現在可以要求一個非到期令牌,它解決了問題。 感謝您的幫助! – Ludo 2012-04-25 08:21:01

1

您需要一個非到期令牌。

授權時,參數scope默認爲"*"

指定的範圍和取得這樣的標記:

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

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

(很老的問題,但只是碰到了這個自己當令牌已過期,你不明白。從API的反饋,然後401錯誤,讓你在黑暗中。)

相關問題