我一直試圖讓這個工作在過去的一天左右沒有任何運氣。我終於將代碼簡化爲最低限度,似乎無法找到解決方案。401訪問令牌設置過程中
$ callbackURL被設置爲相同的頁面,因此它將此頁面調回並在Soundcloud確認步驟後成功返回。
<?php
require_once ("inc/Soundcloud.php");
$client_id = 'CLIENT_ID';
$secret = 'SECRET_KEY';
$callbackURL = "CALL_BACK_URL";
if (!isset($_GET['code'])) {
$client = new Services_Soundcloud($client_id, $secret, $callbackURL);
$client -> setCurlOptions(array(CURLOPT_FOLLOWLOCATION => 1, CURLOPT_CAINFO => $_SERVER['DOCUMENT_ROOT'] . '\\audio\\lib\\inc\\cacert.pem'));
if (!isset($accessToken)) {
$authorizeUrl = $client -> getAuthorizeUrl(array('scope' => 'non-expiring'));
echo "<a href='$authorizeUrl'>Connect</a>";
}
} else {
$client = new Services_Soundcloud($client_id, $secret, $callbackURL);
$client -> setCurlOptions(array(CURLOPT_FOLLOWLOCATION => 1, CURLOPT_CAINFO => $_SERVER['DOCUMENT_ROOT'] . '\\audio\\lib\\inc\\cacert.pem'));
$accessToken = $client -> accessToken($_GET['code']);
echo "Token: $accessToken";
$client -> setAccessToken($accessToken["access_token"]);
}
?>
錯誤:
[27-Mar-2013 16:02:59 America/New_York] PHP Fatal error: Uncaught exception 'Services_Soundcloud_Invalid_Http_Response_Code_Exception' with message 'The requested URL responded with HTTP code 401.' in D:\web\audio\lib\inc\Soundcloud.php:941
Stack trace:
#0 D:\web\audio\lib\inc\Soundcloud.php(817): Services_Soundcloud->_request('https://api.sou...', Array)
#1 D:\web\audio\lib\inc\Soundcloud.php(332): Services_Soundcloud->_getAccessToken(Array, Array)
#2 D:\web\audio\lib\auth.php(20): Services_Soundcloud->accessToken('...')
#3 {main}
thrown in D:\web\audio\lib\inc\Soundcloud.php on line 941
的問題是我不斷地得到了$客戶端 - >的accessToken($ _ GET [ '碼'])的步驟,儘管$ _GET [ '代碼' 401錯誤]正確設置。如果我刪除了CURLOPT_CAINFO,那麼我會得到「響應代碼0」的問題,但我已經過去了。
任何幫助,非常感謝。
IIS與PHP 5.4
編輯:問題與爲捲曲PEM文件的絕對路徑解析。它在我們的測試設置中不一致,因爲我們試圖使用相對路徑而不是絕對路徑。詳細運行CURL後,我得出了結論。此外,Soundcloud遇到了難以調試此問題的問題。
在Windows上,不幸的是需要有時供應的.pem文件捲曲。 – 2013-05-15 15:52:00