我在 node.js (Express) 应用程序中使用 Javascript SDK。
连接用户工作正常,但连接不会在页面重新加载之间持续存在。这是默认行为,还是用户应该在新请求中保持联系?
我是否必须使用 OAuth 令牌身份验证,如果是,如何使用 JS-SDK 来完成?不过,在“权限”-弹出窗口中,用户已经使用 soundlcoud 登录。(每次只需点击“连接”按钮)
我在 node.js (Express) 应用程序中使用 Javascript SDK。
连接用户工作正常,但连接不会在页面重新加载之间持续存在。这是默认行为,还是用户应该在新请求中保持联系?
我是否必须使用 OAuth 令牌身份验证,如果是,如何使用 JS-SDK 来完成?不过,在“权限”-弹出窗口中,用户已经使用 soundlcoud 登录。(每次只需点击“连接”按钮)
想我会为那些对自动 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 来抓取任何东西,而不是轨道。希望这会有所帮助,尽管我不确定我是否完全理解您要完成的工作(或者更确切地说,您打算如何做)-您是否尝试允许用户登录?如果您想充分解释您要完成的工作以及您正在采取的步骤,我很乐意尝试一下。
是的,这是官方的做法。:)
对于 Next SoundCloud 站点,我们将令牌存储在 localStorage 中(当然,直到用户注销)。在前端对 API 的每个 AJAX 请求中,我们将 oauth 令牌放在请求标头中:
jqXHR.setRequestHeader('Authorization', 'OAuth ' + the_oauth_token);