0

上传音频文件时,我在使用 SoundCloud API 发布到 Twitter 和 Facebook 时遇到了一些问题。我有从 SoundCloud 网站配置的 Twitter 和 Facebook 的预先存在的连接设置。我已经通过在“/me/connections”上使用 GET 请求验证了它们都处于活动状态。

我不确定要使用什么参数来发布到社交网络。我试过“post_to”、“shared_to”、“shared-to”和“share_to”。http://developers.soundcloud.com/docs/api/guide#uploading上的 API说要使用“shared_to”,但它不包含在其中com.soundcloud.api.Params,当我手动输入字符串时出现 HTTP 422 未知错误。http://developers.soundcloud.com/blog/ios-sharing上的 iOS 共享指南使用“post_to”,它包含在其中,com.soundcloud.api.Params但是当我使用它时,它会将音频文件发布到 SoundCloud,但不会将任何消息发布到 Twitter 和Facebook。这是我正在使用的代码:

HttpResponse httpResp = Api.wrapper.get(Request.to(Endpoints.MY_CONNECTIONS));

JSONArray jsonCons = new JSONArray(Http.getString(httpResp));
String[] cons = new String[jsonCons.length()];
JSONObject jsonTemp;
for(int i = 0; i < jsonCons.length(); i++) {
    jsonTemp = jsonCons.getJSONObject(i);
    cons[i] = Integer.toString(jsonTemp.getInt("id"));;
}

httpResp = Api.wrapper.post(Request.to(Endpoints.TRACKS)
    .withFile(Params.Track.ASSET_DATA, file)
    .add(Params.Track.TITLE, file.getName())
    .add(Params.Track.SHARING, Params.Track.PUBLIC)
    .add(Params.Track.POST_TO, cons)
//  .add("track[shared_to][][id]", cons)
    .setProgressListener(new Request.TransferProgressListener() {
        @Override
        public void transferred(long l) throws IOException {
            if (isCancelled()) throw new IOException("canceled");
            publishProgress(l, file.length());
        }
    }));

在 SoundCloud 配置文件中,我还可以将其设置为在新上传的声音上自动发布,只要我不包含“post_to”的参数,它就会发布到 Twitter 和 Facebook,但我希望能够控制什么和什么时间我发。如果您能提供任何帮助,我将不胜感激。

谢谢

4

1 回答 1

0

澄清:

  • shared_to用于共享给特定的用户 ID/电子邮件
  • post_to用于社交网络

不幸的是,包装器上的add(String, Object)方法不接受数组/集合,因此您必须像这样添加它们:

httpResp = Api.wrapper.post(Request.to(Endpoints.TRACKS)
  .add("track[shared_to][emails][][address]", "foo@example.com")
  .add("track[shared_to][emails][][address]", "baz@example.com")
  .add("track[shared_to][users][][id]",       "1")
  .add("track[shared_to][users][][id]",       "2")
  .add("track[post_to][][id]",                "3")
  .add("track[post_to][][id]",                "4")

我已经修复了包装器(1),下一个版本将支持“添加”调用中的集合/数组,同时您可以使用快照版本。

于 2013-06-05T14:44:22.300 回答