2012-04-04 24 views
0

Soundcloud APIを使用して、オープンソースのDAWアプリケーション(Ardor)に統合 "エクスポート"機能を実装しようとしています。"User Credentials"フローを使用してlibcurl経由で認証トークンを取得する

少なくとも最初の草稿では、認証されたトークンを取得する最も簡単な方法は、「ユーザー資格情報」フローを使用することです。だから私は自分のアカウントを例として使っている。私はプログラム的にこの要求を生成するためのlibcurlを使用しています:

https://api.soundcloud.com/oauth2/token?client_id=e7ac891eef866f139773cf8102b7a719&client_secret=CLIENT_SECRET&grant_type=password&[email protected]&password=MY_PASSWORD

結果は次のとおりです。 "404 - 見つかりません" 質問の

カップル:)

1任意のアイデア何を「404 - 「見つからない」とは、この意味での意味ですか?私のユーザー名は間違った形式ですか?私はタイプミスをしましたか?または、ユーザー資格情報ワークフローはもはや利用できませんか?

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

私はcurl/webとの統合の専門家ではないことに注意してください(私はlibcurlをFreesound.orgのサウンドを読み込むことができましたが)。

答えて

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サービスを持つ必要はありません。

あなたにフォローアップの質問がある場合は教えてください。私は精巧に答えを編集します。希望が助けてくれる!

+0

ありがとうPaul!私はそれを実現するためにlibcurlに必要なものを調査します。 "秘密" IDについて...そのオープンソースプログラムだから、公開する以外に選択肢はありません。確かに、認証されたユーザーが犯人なので、アプリケーションがSoundcloud TOSを破ることは不可能ですか?アプリケーションにサウンドを「帰属させる」以外に、どうして重要なのでしょうか? 最後に、承認について:私は "認証コードフロー"を使用することができますが、私はデスクトップアプリケーションのコンテキストでそれを理解していません。それは、ある種のメディエーターとして第三者のサーバーを必要とするようです。うまくいけば私はちょうど混乱している。 – user1313170

+0

オープンソースとして出荷している場合は、クライアントの資格情報を残して、アプリの登録をインストール/設定プロセスの一部にする必要があります。問題は、資格を手に入れていることです。たとえば、悪意のある開発者が何か有害なことをするアプリを作成したい場合、アプリの資格情報を使用してアプリとして「ポーズ」することができます。ユーザーはアプリケーションを認証していると思うでしょう。要するに、信用証明書を共有することで信頼関係が壊れます。漏れたクライアントの秘密を持つアプリは、ほぼ確実に無効になります。 –

+0

デスクトップアプリケーションで認証コードフローを使用する方法の詳細を含めるように変更しました。また、なぜユーザーの信用フローが推奨されないのかについても触れました。また、私の答えが役に立つと分かった場合は、それを「受け入れる」ことが良い習慣です:-)助けてくれることを願っています。他に質問がある場合はお知らせください。 –

関連する問題