我希望通过JavaScript使用Soundcloud API轻松解决问题:
未经授权,以下代码可以正常工作:
var group = 'https://soundcloud.com/groups/chilled';
SC.initialize({
client_id: 'MY_CLIENT_ID',
redirect_uri: 'http://localhost:49957/tn/callback.html'
});
// Resolve works fine and gives number ID of group
SC.resolve(group + '?client_id=' + client_id).then(function (g) {
console.log('Group 1: ' + g.id);
});
我授权用户后:
SC.connect().then(function () {
return SC.get('/me');
}).then(function (me) {
authUser = me.id
});
// Resolve no longer works and i get 401 unauthorised
SC.resolve(group + '?client_id=' + client_id).then(function (g) {
console.log('Group 1: ' + g.id);
});
任何人都可以帮助我理解我做错了什么 - 我似乎找不到任何地方可以找到的例子。开车送我便盆!
非常感谢,
詹姆斯
答案 0 :(得分:0)
对于那些面临同样问题的人,我已经回答了我自己的问题:
首先,我没有正确登录,原因是他们的callback.html中的Soundcloud示例代码出错,用于在oAuth客户端登录流程后返回该站点。在Soundcloud的示例callback.html中,代码为:
A B C D E F G H I J K
AET Entered AET + 30 = volts lo i1 i0 vl1 vl0 Value AET Value Time +30
1/08/15 10:00 1/08/15 10:00 TRUE 36 36 36 36 36 36 42217.4166666667000 42217.4166666667000
1/08/15 10:30 1/08/15 10:30 TRUE 23 23 23 23 23 23 42217.4375000000000 42217.4375000000000
1/08/15 11:00 1/08/15 11:00 TRUE 44 44 44 44 44 44 42217.4583333333000 42217.4583333333000
1/08/15 11:30 1/08/15 11:30 TRUE 55 44 44 #N/A 44 #N/A 42217.4791666667000 42217.4791666667000
1/08/15 12:00 1/08/15 12:00 TRUE 13 55 55 #N/A 55 #N/A 42217.5000000000000 42217.5000000000000
1/08/15 12:30 1/08/15 12:30 TRUE 32 13 13 #N/A 13 #N/A 42217.5208333333000 42217.5208333333000
1/08/15 13:00 1/08/15 13:00 TRUE 56 32 32 #N/A 32 #N/A 42217.5416666667000 42217.5416666667000
1/08/15 13:30 1/08/15 13:30 TRUE 70 56 56 #N/A 56 #N/A 42217.5625000000000 42217.5625000000000
1/08/15 14:00 1/08/15 14:00 FALSE 43 70 70 #N/A 70 #N/A 42217.5833333333000 42217.5833333334000
1/08/15 14:30 1/08/15 14:30 TRUE 31 43 43 #N/A 43 #N/A 42217.6041666667000 42217.6041666667000
1/08/15 15:00 1/08/15 15:00 TRUE 21 31 31 #N/A 31 #N/A 42217.6250000000000 42217.6250000000000
1/08/15 15:30 1/08/15 15:30 FALSE 11 21 21 #N/A 21 #N/A 42217.6458333333000 42217.6458333334000
1/08/15 16:00 1/08/15 16:00 TRUE 66 11 11 #N/A 11 #N/A 42217.6666666667000 42217.6666666667000
1/08/15 16:30 1/08/15 16:30 TRUE 45 66 66 #N/A 66 #N/A 42217.6875000000000 42217.6875000000000
1/08/15 17:00 1/08/15 17:00 FALSE 23 45 45 #N/A 45 #N/A 42217.7083333333000 42217.7083333334000
必须改为:
<body onload="window.opener.setTimeout(window.opener.SC.connectCallback, 1)">
如果应用程序设置正确配置到同一域(localhost或生产,但不是两者的混合),这允许弹出窗口正确关闭并完成登录流程。
除此回调外,我还添加了以下代码:
<body onload="window.setTimeout(window.opener.SC.connectCallback, 1)">
在我的后续页面中,我现在可以获取任何数据作为'/ me / ...'端点的子资源,但我以前能够通过公共访问查询的任何内容仍然可以访问。由于我现在可以遍历登录的用户组,我不再需要通过公共资源'/ resolve /'来解析组的名称,所以我的问题没有解决,但在我当前的开发中避免了。