私は Android アプリを持っていて、Facebook SDK for Android を介して共有を実装しました。Feed Dialogを使用しています。
すべてが書かれているとおりに機能しますが、コンテンツがオーディオであるため、SoundCloud と同じように MP3 ファイルも共有したいと考えています。Feed Dialog は、SWF または MP3 ソース URL を受け入れるように見える「source」パラメータを受け入れます。フィード ダイアログ機能のドキュメントはこちらです。
ただし、Source パラメータを埋め込むと、「ソースと画像の両方が指定されている場合は、ソースのみが使用されます」と書かれているとおりに動作します。ただし、最初の約束である「この投稿に添付されたメディア ファイル (SWF または MP3) の URL」には従いません。
私のコードは以下の通りです:
private void publishFeedDialog() {
Bundle params = new Bundle();
params.putString("app_id", "xxxxxxxxxxxxxxx");
params.putString("name", "Name of Audio File");
params.putString("caption", "Listen to Audios");
params.putString("description", "Listen Listen Listen");
params.putString("link", "applink on store");
params.putString("picture", "picturehostedsomewhere.png");
params.putString("source", "http://www.looptvandfilm.com/blog/Radiohead%20-%20In%20Rainbows/01%20-%20Radiohead%20-%2015%20Step.MP3");
WebDialog feedDialog = (
new WebDialog.FeedDialogBuilder(this,
Session.getActiveSession(),
params))
.setOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(Bundle values,
FacebookException error) {
if (error == null) {
// When the story is posted, echo the success
// and the post Id.
final String postId = values.getString("post_id");
if (postId != null) {
Toast.makeText(getApplicationContext(),
"Shared on Facebook",
Toast.LENGTH_SHORT).show();
} else {
// User clicked the Cancel button
Toast.makeText(getApplicationContext(),
"Publish cancelled",
Toast.LENGTH_SHORT).show();
}
} else if (error instanceof FacebookOperationCanceledException) {
// User clicked the "x" button
Toast.makeText(getApplicationContext(),
"Publish cancelled",
Toast.LENGTH_SHORT).show();
} else {
// Generic, ex: network error
Toast.makeText(getApplicationContext(),
"Error posting story",
Toast.LENGTH_SHORT).show();
}
}
})
.build();
feedDialog.show();
}
ストーリーを共有するときに表示されるのは、画像のないストーリーです。リンク、名前、キャプション、説明を含むプレーンテキストであり、ソースも画像もありません。facebooksdk でソースの取得に問題があるか、欠落していると思います。ここに何か。どこが間違っているのだろうか?何か助けてください。