【问题标题】:Posting to Twitter and Facebook using the SoundCloud API on Android在 Android 上使用 SoundCloud API 发布到 Twitter 和 Facebook
【发布时间】:2013-05-31 13:23:17
【问题描述】:

上传音频文件时,我在使用 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我发布什么以及何时发布。如果您能提供任何帮助,我将不胜感激。

谢谢

【问题讨论】:

    标签: android facebook twitter soundcloud


    【解决方案1】:

    澄清一下:

    • 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),下一个版本将支持“添加”调用中的集合/数组,同时您可以使用 snapshot 版本。

    【讨论】:

    • 感谢您的及时回复。这为我修复了它,但在 SoundCloud API 文档中绝对不清楚。它说在“将声音分享给其他社交网络”部分中使用“shared_to”,并且根本没有在文档中列出“post_to”。
    猜你喜欢
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 2011-05-13
    • 1970-01-01
    相关资源
    最近更新 更多