0

Soundcloud APIを使用して、オープンソースのDAWアプリケーション(Ardour)に統合された「エクスポート」機能を実装しようとしています。

少なくとも最初のドラフトでは、認証されたトークンを取得する最も簡単な方法は、「ユーザー資格情報」フローを使用することであるように思われます。そのため、例として自分のアカウントを使用しています。私はlibcurlを使用して、このリクエストをプログラムで生成しています。

https://api.soundcloud.com/oauth2/token?client_id=e7ac891eef866f139773cf8102b7a719&client_secret=CLIENT_SECRET&grant_type=password&username=ben@harrisonconsoles.com&password=MY_PASSWORD

結果は次のとおりです。「404-見つかりません」

いくつかの質問:

1)この文脈で「404-見つかりません」とはどういう意味ですか?ユーザー名の形式が間違っていませんか?タイプミスをしましたか?または、ユーザー資格情報ワークフローは使用できなくなりましたか?

2)これはオープンソースアプリであるため、client_idとclient_secretは実際に世界中で利用可能になります。これの影響(もしあれば)は何ですか?

私はcurl/web統合の専門家ではないことに注意してください(libcurlを使用してFreesound.orgからサウンドをインポートすることはできましたが)-おそらく私は非常に明白な何かを見逃しています。

4

1 に答える 1

0

その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サービスを持っている必要がないことを意味します。

フォローアップの質問がある場合はお知らせください。回答を編集して詳しく説明します。お役に立てば幸いです。

于 2012-04-05T13:09:02.333 に答える