【问题标题】:Soundcloud api access Token (Oauth2)Soundcloud api 访问令牌 (Oauth2)
【发布时间】:2012-08-13 22:46:06
【问题描述】:

测试 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 错误(见下图)。

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

<?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 和令牌! :/

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

【问题讨论】:

  • 我现在没有时间,但是如果您仍然没有解决方案,我会收藏它并在今晚为您提供帮助。 :-)
  • 谢谢PeeHaa,我想应该不多,但我没有找到解决办法:p
  • 您还可以查看OAuth library @PeeHaa 一直在努力的内容。它已经实现了 SoundCloud。
  • @Leigh 我只是试了一下,它有效,但只有一次......我已经更新了我的第一篇文章。我必须创建一个 cookie 以保持会话打开?

标签: php api oauth access-token soundcloud


【解决方案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());
}

【讨论】:

  • 这怎么可能解决任何问题,因为调用 $accessToken = $soundcloud2->accessToken($_GET['code']); ??之后调用 setAccessToken 解决不了任何问题,因为之前抛出异常
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2011-07-28
    • 1970-01-01
    • 2023-04-05
    • 2022-11-28
    • 2013-05-03
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    相关资源
    最近更新 更多