访问令牌设置期间401

时间:2013-03-27 20:10:42

标签: php oauth soundcloud

在过去的一天左右,我一直试图让这个工作没有任何运气。我终于将代码简化为最低限度,似乎无法找到解决方案。

$ 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

问题是我在$ client-&gt; accessToken($ _ GET ['code'])步骤中不断出现401错误,尽管正确设置了$ _GET ['code']。如果我删除CURLOPT_CAINFO,我会收到“响应代码0”问题,但我已经解决了这个问题。

非常感谢任何帮助。

使用PHP 5.4的IIS

编辑:问题已通过CURL的PEM文件的绝对路径解决。我们的测试设置不一致,因为我们尝试使用相对路径而不是绝对路径。在详细运行CURL之后我得出了结论。此外,Soundcloud遇到了问题,这使得调试此问题变得困难。

2 个答案:

答案 0 :(得分:0)

上述代码在发布此问题后间歇性地开始工作,问题似乎是Soundcloud的服务器或奇怪的事情。不确定它是如何修复但是0代码更改刷新返回一个令牌。尝试再次给了我一个401.不确定原因,但上面的代码应该给你你的令牌(最终)。

答案 1 :(得分:0)

使用SDK时不应该使用的设置卷曲选项。

此处还有更多文档。

https://github.com/mptre/php-soundcloud