【问题标题】:401 during access token setup访问令牌设置期间的 401
【发布时间】:2013-03-27 20:10:41
【问题描述】:

在过去一天左右的时间里,我一直试图让这个工作正常进行,但没有任何运气。我终于将代码简化到最低限度,但似乎找不到解决方案。

$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->accessToken($_GET['code']) 步骤中不断收到 401 错误,尽管 $_GET['code'] 设置正确。如果我删除 CURLOPT_CAINFO,我会收到“响应代码 0”问题,但我已经解决了这个问题。

非常感谢任何帮助。

带有 PHP 5.4 的 IIS

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

【问题讨论】:

    标签: php oauth soundcloud


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      这里还有一些文档。

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

      【讨论】:

      • 不幸的是,在 Windows 上,有时需要为 CURL 提供 .pem 文件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-29
      • 2012-07-05
      • 2020-03-10
      • 1970-01-01
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      相关资源
      最近更新 更多