连接

时间:2015-11-02 21:18:22

标签: javascript oauth popup soundcloud

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

用我的弹出窗口拦截器确认后,auth弹出窗口出现并请求访问我的帐户的权限,我给它许可,然后弹出窗口清除所有以前的内容并简单地通知:'此弹出窗口应自动关闭几个秒' - 但它没有,并且显示其过去授权的其余代码永远不会显示。

这是我正在使用的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'开头的网址。 ???我很难相信这是问题,不幸的是,对我而言,本地主机或我的域名都不是以www开头的。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在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还是生产域),并且一切都可以正常运行。

注意:为了进行调试,请注释掉这一行以便有意留下弹出窗口,然后可以使用console来查询callback.html页面中的其他代码。