2013-06-05 50 views
0

上傳音頻文件時,我在使用SoundCloud API發佈到Twitter和Facebook時遇到了一些麻煩。我已經在SoundCloud網站上配置了Twitter和Facebook的預先連接設置。我已經通過在「/ me/connections」上使用GET請求驗證了它們都處於活動狀態。在Android上使用SoundCloud API發佈到Twitter和Facebook

我不確定用什麼參數來發布到社交網絡。我嘗試過「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未知錯誤。 iOS共享指南http://developers.soundcloud.com/blog/ios-sharing使用「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輪廓,我還可以將其設置爲新上傳的聲音自動發佈,並會張貼到Twitter和Facebook,只要我不包括帕拉姆「post_to」,但我希望能夠控制我發佈的內容和時間。我將不勝感激您提供的任何幫助。

感謝

回答

0

澄清:

  • shared_to是分享給特定的用戶ID /電子郵件
  • post_to是社交網絡

add(String, Object)方法在包裝遺憾的是沒有按不接受數組/集合,所以你必須像這樣添加它們:

httpResp = Api.wrapper.post(Request.to(Endpoints.TRACKS) 
    .add("track[shared_to][emails][][address]", "[email protected]") 
    .add("track[shared_to][emails][][address]", "[email protected]") 
    .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版本。

+0

感謝您的及時迴應。這對我來說是固定的,但在SoundCloud API文檔中肯定不是很清楚。它表示要在「與其他社交網絡共享聲音」部分使用「shared_to」,並且在文檔中根本沒有列出「post_to」。 – Nick

相關問題