あなたはそのURLにGETリクエストをしているようです。 OAuth2トークンエンドポイントはPOST要求のみをサポートします。さらに、パラメータはクエリ文字列の一部ではなく、要求本体で送信する必要があります。 curlコマンドラインユーティリティを使用して、これは次のようになります。
curl -X POST -D - https://api.soundcloud.com/oauth2/token -F'client_id=YOUR_CLIENT_ID' \
-F'client_secret=YOUR_CLIENT_SECRET' -F'grant_type=password' \
-F'username=YOUR_USERNAME' -F'password=YOUR_PASSWORD'
技術的には、我々はそれを指摘するために、私はそのためにバグを報告します404の代わりに感謝を405に返送する必要があります。
クライアント資格情報を配布しないことは間違いありません。クライアントIDとクライアントシークレットは、アプリケーションをSoundCloudに一意に識別します。これらを配布する場合は、他のアプリケーション開発者がそれらの値を使用して、自分のように見えるアプリケーションを作成することができます。これらのアプリケーションの1つがSoundCloudsの利用規約に違反している場合は、クライアントIDへのアクセスを切断する必要があるため、アプリケーションも無効にする必要があります。
さらに、ユーザー資格フローはサポートされていますが、より一般的な承認コードフローが使用できない場合にのみ推奨されます。認証コードフローは、ほとんどのユーザーにとってより使い慣れています。これにより、ユーザーに、アプリケーションにクレデンシャルを与えることなく、アプリケーションへのアクセスを許可することができます。ユーザークレデンシャルフローが推奨されない主な理由は、Facebook Connect経由で登録したユーザーがパスワードを持っていないため、アプリケーションをSoundCloudアカウントに接続できなくなるためです。
デスクトップ/モバイルアプリケーションの場合、カスタムプロトコルスキーム(例:myapp://)を使用するアプリ登録プロセス中にリダイレクトURIを指定して、アプリケーションにコントロールを戻すことができます。これを行う正確な方法は、プラットフォームごとに異なります。つまり、認証フローを仲介するために実行中のWebサービスを持つ必要はありません。
あなたにフォローアップの質問がある場合は教えてください。私は精巧に答えを編集します。希望が助けてくれる!
ありがとうPaul!私はそれを実現するためにlibcurlに必要なものを調査します。 "秘密" IDについて...そのオープンソースプログラムだから、公開する以外に選択肢はありません。確かに、認証されたユーザーが犯人なので、アプリケーションがSoundcloud TOSを破ることは不可能ですか?アプリケーションにサウンドを「帰属させる」以外に、どうして重要なのでしょうか? 最後に、承認について:私は "認証コードフロー"を使用することができますが、私はデスクトップアプリケーションのコンテキストでそれを理解していません。それは、ある種のメディエーターとして第三者のサーバーを必要とするようです。うまくいけば私はちょうど混乱している。 – user1313170
オープンソースとして出荷している場合は、クライアントの資格情報を残して、アプリの登録をインストール/設定プロセスの一部にする必要があります。問題は、資格を手に入れていることです。たとえば、悪意のある開発者が何か有害なことをするアプリを作成したい場合、アプリの資格情報を使用してアプリとして「ポーズ」することができます。ユーザーはアプリケーションを認証していると思うでしょう。要するに、信用証明書を共有することで信頼関係が壊れます。漏れたクライアントの秘密を持つアプリは、ほぼ確実に無効になります。 –
デスクトップアプリケーションで認証コードフローを使用する方法の詳細を含めるように変更しました。また、なぜユーザーの信用フローが推奨されないのかについても触れました。また、私の答えが役に立つと分かった場合は、それを「受け入れる」ことが良い習慣です:-)助けてくれることを願っています。他に質問がある場合はお知らせください。 –