我尝试使用脚本php-soundcloud(Oauth 2),用户登录后遇到问题。
我正在完成教程wiki:https://github.com/mptre/php-soundcloud/wiki/Oauth-2
当用户接受该应用程序时,它会返回以下URL:http://mywebsite.com/?code=123456789123456789
我得到了正确的$_GET['code']
,但函数accessToken()
无法检索信息,它会给我一个 HTTP code 401 错误(参见下图)。
这是我的代码(最基本的):
<?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_id
或access_token
但我肯定会发送正确的ID和令牌! :/
如果有人已经操作SoundCloud API并知道我为什么会收到此错误,请告诉我任何解决方案。
答案 0 :(得分: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());
}
答案 1 :(得分:0)
我遇到了同样的错误,在我的情况下是由于没有第三个(redirect_uri)参数调用Services_Soundcloud构造函数引起的。添加这个参数(首先不需要它,因为它完全没用,但是SoundCloud API设计得很糟糕)使它适合我(不需要调用setAccessToken)。
除了API构思错误之外(因为它只允许在应用程序中配置一个固定的返回URL [已经是一个愚蠢且严重的限制]并且同时需要它作为参数[当它只能有一个有效的值]),PHP库是有缺陷的,因为如果你在没有第三个参数的情况下调用构造函数,它就不会抛出异常。
请注意,return_url的值必须与应用程序中配置的值匹配。