2

我在 node.js (Express) 应用程序中使用 Javascript SDK。

连接用户工作正常,但连接不会在页面重新加载之间持续存在。这是默认行为,还是用户应该在新请求中保持联系?

我是否必须使用 OAuth 令牌身份验证,如果是,如何使用 JS-SDK 来完成?不过,在“权限”-弹出窗口中,用户已经使用 soundlcoud 登录。(每次只需点击“连接”按钮)

4

2 回答 2

3

想我会为那些对自动 oauth 的当前答案不满意的人分享我的答案:

检索 access_token:

我必须定义 get 和 set cookie 函数,然后我使用这些函数来设置和检索保存访问令牌的函数。为了简洁起见,我不会给出这些函数,但您可以通过 google 搜索轻松找到它们。然后我使用这行代码来获取 SC 访问令牌(一旦用户第一次通过身份验证)

SC.accessToken()

设置令牌:

所以在我看来,这只是房间里的一头大象,出于某种原因,没有人提到过。您如何使用访问令牌与 SC 连接?您是否将其设置为 oauth 参数?每次通话都通过吗?好吧,在尝试将参数放在我能想到的每个地方之后,我发现你必须做这样的事情:

            SC.initialize({
              client_id: '[removed for security reasons]',
              client_secret: '[removed for security reasons]',
              redirect_uri: '[removed for security reasons]',
              access_token: getCookie("sc_lm2"),
              scope: 'non-expiring'
            }); 
//Where "sc_lm2" is the name of my cookie

希望有帮助!我花了一段时间才弄清楚这么简单的事情

编辑

使用 PHP 和 Wordpress:

$json = wp_remote_get("http://api.soundcloud.com/users/[user_id]/tracks.json?client_id=[client_id]");
$soundcloudData = json_decode($json['body'],true);

(如果您不使用 Wordpress,请替换 cURL 功能)。@krafty 我假设您只需将端点从“/tracks”更改为“/users”,但我不能说我真的需要使用 Soundcloud API 来抓取任何东西,而不是轨道。希望这会有所帮助,尽管我不确定我是否完全理解您要完成的工作(或者更确切地说,您打算如何做)-您是否尝试允许用户登录?如果您想充分解释您要完成的工作以及您正在采取的步骤,我很乐意尝试一下。

于 2013-09-20T19:47:36.717 回答
2

是的,这是官方的做法。:)

对于 Next SoundCloud 站点,我们将令牌存储在 localStorage 中(当然,直到用户注销)。在前端对 API 的每个 AJAX 请求中,我们将 oauth 令牌放在请求标头中:

jqXHR.setRequestHeader('Authorization', 'OAuth ' + the_oauth_token);
于 2012-06-20T16:40:04.443 回答