私はSoundcloud APIを使い始めたばかりで、認証に引っ掛かりました。Yeoman を使用grunt server
して AngularJS プロジェクトをビルドし、ブラウザーでプロジェクトをプレビューするために使用しました。
http://localhost:9000/#/
index.html
これは、私の AngularJS アプリのメイン ページであるの URLです。次のcallback.html
ファイルを追加しました ( Soundcloud API docs にあります) 。
<!DOCTYPE html>
<html lang="en">
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Connect with SoundCloud</title>
</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>
ファイルが置かれている私のプロジェクトのapp
ディレクトリにあります。index.html
さらに、不合理な絶望の中callback.html
で、URL のビューとしてファイルを提供するように AngularJS アプリを構成しました
http://localhost:9000/#/callback
たぶん、そのように見つけるだろうと思いました。redirect_uri
実際のサーバーでホストする必要があると考え始めています。うなり声のサーバーが、ローカル以外の場所でファイルを提供できるサーバーとしての資格があるかどうかはわかりません。
自分のファイルがAngularJS アプリのディレクトリにあるredirect_uri
ことを知っていると どうなるかについてのアイデアはありますか?callback.html
app
更新 1
さまざまな URL/URI の組み合わせを試しました。
コンボ 1
私のJavascriptで:
redirect_uri: "http://localhost:9000/#/callback"
アプリの設定で
http://localhost:9000/#/callback.html
コンボ 2
私のJavascriptで:
redirect_uri: "http://localhost:9000/#/callback.html"
アプリの設定で
http://localhost:9000/#/callback.html
コンボ 3
私のJavascriptで:
redirect_uri: "http://localhost:9000/#/callback.html"
アプリの設定で
http://localhost:9000/#/callback
さらに、これを Chrome で実行すると、Chrome Dev Tools のコンソールに次のエラーが表示されます。
Uncaught SyntaxError: Unexpected identifier useranalyzr.js:4
useranalyzr.js
私のファイルでわかるように、4 行目はredirect_uri
.
window.onload = function() {
SC.initialize({
client_id: '###################################'
redirect_uri: "http://localhost:9000/#/callback.html"
});
SC.connect(function(){
SC.put("/me/followings/12345", function(user, error) {
if(error){
alert("Error: " + error.message);
}else{
alert("You are now following " + user.username);
}
});
});
}
ええ、どの組み合わせを試しても、常に同じエラーが発生します。私は、AngularJS ルートが邪魔にならないように、静的な callback.html ファイルを提供するためのうなり声を得る方法を見つける必要があると考え始めています。直リンクのみです。
更新 2
callback.html
OKでサービスを提供できhttp://localhost:9000/callback.html
、SC.connect 承認プロセス全体が開始されます。ブラウザがリダイレクトされる
https://soundcloud.com/connect?state=SoundCloud_Dialog_c3241&client_id=####################################&redirect_uri=http%3A%2F%2Flocalhost%3A9000%2Fcallback.html&response_type=code_and_token&scope=non-expiring&display=popup
次に、[接続] を押してアクセスを承認すると、ブラウザは次の場所にリダイレクトされcallback.html
ますhttp://localhost:9000/callback.html
が、コード、状態、およびアクセス トークンが添付されています。
http://localhost:9000/callback.html?code=508aa0dd5ce3d0f4254157a487fc4826&state=SoundCloud_Dialog_c3241#access_token=1-46482-7907892-1328d9e0fc383baf&scope=non-expiring
そのページが読み込まれると、Dev Tools コンソールにエラーが表示されます
Uncaught TypeError: Cannot read property 'SC' of null
それは正常ですか?
また、私のアプリは my 、またはURLに基づいているため、アプリcallback.html
を atにリダイレクトさせたくありません。に戻すにはどうすればよいですか?http://localhost:9000/callback.html
index.html
http://localhost:9000/#/
http://localhost:9000/#/
おそらくSoundCloud SDKにアクセスできないためだと思い始めたので、入れました
<script src="http://connect.soundcloud.com/sdk.js"></script>
の中にありますが、エラー<head>
は解決しません。callback.html
更新 3 : 更新 2 の問題が解決されました
それで、Firefoxで試してみたところ、うまくいきました。サインイン/接続を求めるポップアップが実際にポップアップしました。そうすると、ポップアップウィンドウで callback.html が呼び出され、予想どおりすべて消えました。私のメインアプリウィンドウは残っていましたが、ユーザー認証がありました. Chromeで機能しなかった理由は、ポップアップがずっと静かにブロックされていたため、Chromeが実際にアプリを離れ、サインイン/接続ページに移動し、接続を押した後にcallback.html
. それはウィンドウタブだったので、コードが指示したように消えると思います。私の悪い説明で申し訳ありません。まだJSとSC APIの初心者です。