繁体   English   中英

在访问令牌设置期间为401

[英]401 during access token setup

我一直在努力使这项工作在过去的一天左右没有任何运气。 我终于将代码简化到最低限度,而且似乎找不到解决方案。

$ 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

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

任何帮助是极大的赞赏。

带有PHP 5.4的IIS

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

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

使用SDK时不需要的set curl选项。

这里还有更多文档。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM