SoundCloud POST评论未经授权

时间:2012-11-22 19:18:09

标签: actionscript-3 post soundcloud urlloader urlrequest

[UPDATE] 问题已解决。下面更新了工作代码和方法!

所以,我试图使用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控制台后,我看到有一个内容长度' 0,意思是没有身体。所以所有的身份验证都必须在头文件中,而不是变量。但是,使用AS3 UrlLoader中的POST方法,如果没有包含正文(变量),它将自动发送为GET。因此,我留下了一个任意的变量值。

这两个参数,' body'和'时间戳'确实必须发送评论[正文]'和'评论[时间戳]'即使文档中没有明确说明这一点。此外,这两个参数都必须包含在URL中,而不是作为变量或标题。

最后,要获得授权退货,您必须同时提供您的' client_id'和' oauth_token'作为标题。

正是这种神奇的组合为我做到了。我希望这可以帮助其他人,准备像我一样撕掉他们的头发。

THX, Theo M。

0 个答案:

没有答案