首先,我使用Soundclouds JS sample code for client side JS apps连接Soundcloud API。他们的代码和我的代码唯一的区别是我放入了我自己的client_id和redirect_uri。(我还复制了他们的callback.html,把它放到我的服务器上,把它的地址放在我的应用程序的soundcloud页面上)。
在我的弹出窗口拦截器确认后,身份验证弹出窗口出现,并要求允许访问我的帐户,我给它许可,然后弹出窗口清除所有以前的内容,并简单地通知:‘这个弹出窗口应该在几秒钟内自动关闭’-但它没有,并且显示其过去授权的其余代码永远不会显示。
这是我正在使用的Soundcloud示例。我在本地主机上使用服务器并部署它并适当地更改redirect_uri时尝试了它,结果完全相同。
SC.initialize({
client_id: 'YOUR_CLIENT_ID', // changed it to mine
redirect_uri: 'http://example.com/callback'
});
SC.connect().then(function() {
return SC.get('/me');
}).then(function(me) {
alert('Hello, ' + me.username);
});
在Chrome和Firefox的开发控制台中,我没有看到任何错误。我还确保我的redirect_uri文件的协议在我的帐户设置和代码之间匹配。
在我的应用程序的Soundcloud页面上的“你的应用程序的网站”字段会有区别吗?我试着设置它,它没有修复它。客户端机密是做什么的?
到目前为止,我找到的最接近答案的是this SO page,他似乎发现你不能使用不以“www”开头的url。我很难相信这就是问题所在,不幸的是,无论是本地主机还是我的域名都不是以www开头的。
提前感谢您的帮助。
发布于 2016-01-05 10:58:39
在您的callback.html中,更改行:
<body onload="window.opener.setTimeout(window.opener.SC.connectCallback, 1)">
至:
<body onload="window.setTimeout(window.opener.SC.connectCallback, 1)">
在soundcloud.com的应用程序设置页面中,确保您的网站设置和回调uri位于相同的域(无论是本地主机还是生产域),并且一切都应该正常工作。
注意:为了调试,注释掉这一行,故意将弹出窗口留在那里,然后可以使用console来询问callback.html页面中的其他代码。
https://stackoverflow.com/questions/33487114
复制相似问题