その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サービスを持っている必要がないことを意味します。
フォローアップの質問がある場合はお知らせください。回答を編集して詳しく説明します。お役に立てば幸いです。