Soundcloud auth popup callback.html在连接后永远不会关闭

Soundcloud auth popup callback.html never closes after connecting

本文关键字:永远 连接 popup auth callback html Soundcloud      更新时间:2023-09-26

首先,我使用客户端JS应用程序的Soundclouds JS示例代码来连接Soundcloud API。他们的代码和我的代码之间唯一的区别是我放入了自己的client_id和redirect_uri。(我还复制了他们的callback.html,把它放在我的服务器上,把它的地址放在我应用程序的soundcloud页面中)。

在使用我的弹出窗口阻止程序后,验证弹出窗口出现并请求访问我的帐户的权限,我授予它权限,然后弹出窗口清除所有以前的内容,并简单地通知:"这个弹出窗口应该在几秒钟内自动关闭"-但它没有,并且显示其过去授权的其余代码永远不会显示。

这是我正在使用的Soundclouds示例。我在使用localhost上的服务器时尝试过它,也部署过它,并适当地更改了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页面上的"你的应用程序网站"字段有什么不同吗?我试着设置它,但它没有修复它。客户机密是做什么的?

到目前为止,我找到的最接近答案是在这个so页面上,他似乎发现你不能使用不以"www."开头的url???我很难相信这就是问题所在,不幸的是,无论是本地主机还是我的域都不是以www.开头的

提前感谢您的帮助。

在callback.html中,更改行:

<body onload="window.opener.setTimeout(window.opener.SC.connectCallback, 1)">

至:

<body onload="window.setTimeout(window.opener.SC.connectCallback, 1)">

在soundcloud.com上的应用程序设置页面中,确保您的网站设置和回调uri位于同一个域(无论是本地主机还是生产域),并且所有这些都可以工作。

注意:为了调试,请注释掉这一行,故意将弹出窗口留在那里,然后控制台可以用来询问callback.html页面中的其他代码。