5

JavaScript API を使用しています。問題なく簡単なテキスト投稿を行うことができます:

var params = {};
params['message'] = 'The text';
FB.api("me/feed", 'post', params, function(response) {
   if (!response || response.error)
      alert(response.error.message);
   else
      alert('Post ID: ' + response.id);
});

次を使用して画像を追加します。

params['picture'] = "http://mysite.com/link-to-picture";
params['type'] = "photo";
...

画像をサムネイルにして、リンクが文字化けしたリンク型のステータスを投稿します。

「my/photos」を使用すると、最初は問題なく動作します。

var params = {};
params['message'] = 'The text';
params['url'] = "http://mysite.com/link-to-picture";
FB.api("me/photos", 'post', params, function(response) {
   if (!response || response.error)
      alert(response.error.message);
   else
      alert('Post ID: ' + response.id);
});

しかし、別の投稿を行うと、フィードから最初の投稿アイテムが失われ、2 番目の投稿のテキストと両方の (関係のない) 写真を含むアルバム タイプのプレゼンテーションがフィードに表示されます。

独自のテキストと写真を含む個別のステータス ポストを取得できた唯一の方法は、最初にシリアル番号付きのアルバムを作成し、次に写真をそこに投稿することです。

var aparams = {};
aparams['name'] = "post"+postid;
aparams['message'] = "album for post "+postid;
FB.api("me/albums", 'post', aparams, function(response) {
  if (!response || response.error)
  {
     alert("Creating album: "+response.error.message);
  }
  else
  {
     alert('Album ID: ' + response.id);
     var aid = response.id;
     params['url'] = "http://mysite.com/link-to-picture";
     FB.api(aid+"/photos", 'post', params, function(response) {
        if (!response || response.error)
           alert("Posting photo: "+response.error.message);
        else
           alert('Post ID: ' + response.id);
     });
  }
});

それは正しい方法ではありません - 大量の単一の写真アルバムを作成します!

デフォルトで「タイムライン写真」アルバムがあることに気付きました。そのため、その ID を取得して、そこに写真をアップロードできました。しかし、テキストだけで FB.api("my/feed" ...) 投稿を行い、写真を参照するにはどうすればよいでしょうか。ドキュメントでそのようなものを見つけることができません。

私の要件は非常に基本的なものに思えます。誰かがそれを正しくすることができましたか?

4

1 に答える 1

0

Facebook は、一定の時間間隔でアルバムにアップロードされた写真を単一の投稿として自動的に検出し、それらをクラブします。また、アプリケーションを介したスパムから保護することも目的です。

于 2015-06-03T10:41:12.483 に答える