【追記】 不具合修正しました。作業コードとメソッドが以下に更新されました!
そのため、AS3 の SoundCloud API を使用して、SoundCloud トラックにコメントを投稿しようとしています。ドキュメントは次の場所にあります。
http://developers.soundcloud.com/docs/#comments
私のコードは次のとおりです。
var urlLoader:URLLoader = new URLLoader();
var urlString:String = "https://api.soundcloud.com/tracks/" + soundModel.currentlyPlayingItem.id + "/comments.json" + "?comment[body]=" + commentString + "&comment[timestamp]=" + trackPositionComment;
var urlRequest:URLRequest = new URLRequest(urlString);
urlRequest.method = URLRequestMethod.POST;
var variables:URLVariables = new URLVariables();
variables.oauth_token = soundModel.userToken; //here is the filler variable to make POST, not GET.
urlRequest.data = variables;
urlRequest.contentType = "application/x-www-form-urlencoded";
var header2:URLRequestHeader=new URLRequestHeader("oauth_token",soundModel.userToken);
var header3:URLRequestHeader=new URLRequestHeader("client_id", "sdjhb4jhbkjbe4gkjbh4random");
urlRequest.requestHeaders.push(header2);
urlRequest.requestHeaders.push(header3);
urlLoader.addEventListener(HTTPStatusEvent.HTTP_RESPONSE_STATUS, commentPosted);
urlLoader.load(urlRequest);
当初、私は一貫して 401 - 無許可のエラーを受け取っていました。
SoundCloud API コンソールをいじってみたところ、'content-length' が 0 であることがわかりました。これは本文がないことを意味します。そのため、すべての認証は変数ではなくヘッダーに入れる必要がありました。ただし、AS3 UrlLoader の POST メソッドでは、ボディ (変数) が含まれていない場合、自動的に GET として送信されます。そのため、任意の変数値を残しました。
また、'body' と 'timestamp' の 2 つのパラメーターは、実際には 'comment[body]' と 'comment[timestamp]' として送信する必要がありますが、これはドキュメントでは明確にされていません。また、これらのパラメーターは両方とも、変数やヘッダーとしてではなく、URL に含める必要があります。
最後に、承認されたリターンを取得するには、「client_id」と「oauth_token」の両方をヘッダーとして提供する必要があります。
私のためにそれをしたのは、この魔法の組み合わせでした。これが、私のように髪を引き裂く準備ができている他の人に役立つことを願っています.
Thx、テオ M.