1

测试 php-soundcloud

我尝试使用脚本php-soundcloud (Oauth 2),但在用户登录后遇到问题。
我完全按照教程 wiki:https ://github.com/mptre/php-soundcloud/wiki/Oauth-2

当用户接受应用程序时,它会返回以下 URL:http://mywebsite.com/?code=123456789123456789

我得到了正确的信息,$_GET['code']但该函数accessToken()不会检索信息,它给了我一个HTTP 代码 401错误(见下图)。

HTTP 代码 401 soundcloud

这是我的代码(最基本的):

<?php

include 'Services/Soundcloud.php';
$soundcloud = new Services_Soundcloud('_myClientId_', '_ClientSecret_', '_RedirectUri_');

echo '<a href="' . $soundcloud->getAuthorizeUrl() . '">Connect with SoundCloud</a><br />';

try {
    $accessToken = $soundcloud2->accessToken($_GET['code']);
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
    exit($e->getMessage());
}

这是 soundcloud 的 HTTP 状态代码:http: //developers.soundcloud.com/docs/api/guide#errors
他们说代码 401 是:确保您向我们发送一个client_idaccess_token.
但我一定会发送正确的 id 和 token!:/

如果有人已经操作过 SoundCloud API 并且知道我为什么会收到此错误,请告诉我任何解决方案。

4

2 回答 2

1

好的,我找到了!太简单了......
我没有看到setAccessToken()将令牌添加到类的函数

try {
    $accessToken = $soundcloud2->accessToken($_GET['code']);
    // this is the part that I was missing
    $soundcloud2->setAccessToken($accessToken["access_token"]);
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
    exit($e->getMessage());
}
于 2012-08-24T07:44:12.117 回答
0

atmon3r 的回答肯定是错误的。对 setAccessToken() 的调用完全没有必要,因为对 accessToken() 的调用已经设置了访问令牌。此外,他在调用 accessToken() 时遇到了异常,因此在发出异常的代码之后添加一行代码不可能修复它。

我遇到了同样的错误,在我的情况下,它是由调用 Services_Soundcloud 构造函数而没有第三个 (redirect_uri) 参数引起的。添加此参数(首先应该没有必要,因为它完全没用,但 SoundCloud API 的设计非常糟糕)使它对我有用(无需调用 setAccessToken)。

除了 API 构思不周(因为它只允许在应用程序中配置一个固定的返回 url [本身已经是一个愚蠢和严重的限制] 并且同时需要它作为参数 [当它只能有一个有效的value]),PHP 库是有缺陷的,如果您在没有必需的第三个参数的情况下调用构造函数,它不会抛出异常。

请注意,return_url 的值必须与应用程序中配置的值匹配。

于 2015-04-12T20:23:46.557 回答