3

ここの例の後に私のコードをモデル化しようとしています:http://connect.soundcloud.com/examples/connecting.html#

Firefoxで動作しますが、Chromeでは動作しません。Chromeでは、soundcloudポップアップが正しく表示され、サインイン(sc-connect.htmlに戻る)できますが、ウィンドウが閉じません。よく調べてみると、window.openerがnullであるため、javascriptエラーが発生します。ローカルホストURIと関係があるのだろうか?上記のリンクの例は、FirefoxとChromeの両方で機能します。何か案は?以下の私のコード:

SC.initialize({client_id:'my_client_id', redirect_uri:'http://localhost:3000/sc-connect.html'});

$('button').click(function(){
  SC.connect(function () {
    console.log('made it');
  }
}

私のsc-connect.htmlページは次のようになります。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html>
    <head>
      <title>Connect with SoundCloud</title>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    </head>
    <body onload="window.opener.setTimeout(window.opener.SC.connectCallback, 1)">
      <b style="width: 100%; text-align: center;">This popup should automatically close in a few seconds</b>
    </body>
  </html>

このアプリのsoundcloudでURIをリダイレクトします:http:// localhost:3000 / sc-connect.html

4

3 に答える 3

4

これは実際には、Chrome App Store から SoundCloud アプリをインストールすることによって引き起こされる Chrome の奇妙なバグです。奇妙です、私は知っています。

回避策は、を使用する代わりにwindow.opener、oauth トークンを LocalStorage または SessionStorage にプッシュし、オープナー ウィンドウでStorage イベントをリッスンすることです。

于 2012-03-11T21:38:11.100 に答える
0

サンプル コードに閉じ括弧がいくつか欠けているようです。それ以外は、あなたの例では明らかに間違っているようには見えません。sc-connect.html をコピーして貼り付け、次のように使用しました。

<html>
<head>
  <title>Demo</title>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
  <script type="text/javascript" src="http://connect.soundcloud.com/sdk.js"></script>
  <script type="text/javascript">

  $(document).ready(function() {
      SC.initialize({
          client_id: 'MY_CLIENT_ID',
          redirect_uri: 'http://localhost:8080/connect/sc-callback.html'
      });

      $('button').click(function(){
          SC.connect(function() {
              SC.get('/me', function(data) {
                  $('#name').text(data.username);
              });
          });
      });
  });

  </script>
</head>
<body>
  <button>Connect</button>
  <p>
    Hello There, <span id="name"></span>
  </p>
</body>
</html>

これは、Firefox と Chrome で機能します。それが役立つかどうか教えてください。

于 2012-03-09T20:50:37.890 に答える