【问题标题】:Soundcloud auth popup callback.html never closes after connectingSoundcloud auth popup callback.html 连接后从不关闭
【发布时间】:2016-02-02 21:31:29
【问题描述】:

我使用Soundclouds JS sample code for client side JS apps 连接Soundcloud API,作为开始。他们的代码和我的唯一区别是我输入了自己的 client_id 和 redirect_uri。 (我还复制了他们的 callback.html,把它放在我的服务器上,把它的地址放在我的应用程序的 soundcloud 页面中)。

在我的弹出窗口拦截器确定后,身份验证弹出窗口出现并询问访问我的帐户的权限,我授予它权限,然后弹出窗口清除所有以前的内容并简单地通知:'此弹出窗口应在几秒钟内自动关闭seconds' - 但它没有,并且显示其过去授权的其余代码永远不会显示。

这是我正在使用的 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 页面上的“您的应用程序的网站”字段是否有影响?我尝试设置它,它没有解决它。客户端密码有什么作用?

到目前为止,我找到的最接近答案的是this SO page,他似乎发现你不能使用不以“www”开头的网址。 ???我很难相信这是问题所在,不幸的是,对我来说,localhost 或我的域都不是以 www 开头的。

提前感谢您的帮助。

【问题讨论】:

  • 我遇到了完全相同的问题。最接近我找到问题原因的方法是here。不幸的是,这无济于事,因为它表示当您导航到不同的域时会删除window.opener,弹出窗口会这样做以通过soundcloud.com 进行身份验证。那么问题是“当您转到其他域时,soundcloud 如何建议您使用window.opener?”
  • 您找到任何解决方案了吗?我也面临同样的问题。
  • SoundCloud 的示例代码已损坏。看我的回答here

标签: javascript oauth popup soundcloud


【解决方案1】:

在您的 callback.html 中,更改行:

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

到:

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

在您位于 soundcloud.com 的应用程序设置页面中,确保您的网站设置和回调 uri 在同一个域中(无论是 localhost 还是生产域)并且都应该工作。

注意:为了调试,把这行注释掉,故意留下弹窗,然后控制台可以用来查询callback.html页面中的其他代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    相关资源
    最近更新 更多