【问题标题】:How do I can post a multiple photos via Facebook API如何通过 Facebook API 发布多张照片
【发布时间】:2014-05-25 18:56:12
【问题描述】:

现在我像这样在墙上贴一张照片:

$response = $facebook->api("/$group_id/photos", "POST", array(
    'access_token=' => $access_token,
    'message' => 'This is a test message',
    'url' => 'http://d24w6bsrhbeh9d.cloudfront.net/photo/agydwb6_460s.jpg',
   )
);

它工作正常,但我可以以某种方式发布多张照片,如下所示:

【问题讨论】:

  • 嗨,你找到解决这个问题的方法了吗?

标签: php facebook facebook-graph-api facebook-php-sdk


【解决方案1】:

您需要先上传每张照片,并将已发布状态设为 false,然后使用未发布照片的 ID 到 /me/feed 端点来安排照片。时间表需要在照片上传后的 24 小时内,因为 facebook 会在 24 小时内删除所有未发布的照片​​。

参考: https://developers.facebook.com/docs/graph-api/photo-uploads/

【讨论】:

    【解决方案2】:

    实际上,您可以上传多故事照片(我使用 Graph Api 和 PHP),但如果您需要安排此帖子,问题就来了。您的帖子是时间表,但它也会显示在页面的提要中。

    附:我正在使用 Graph Api v2.9

    PHP 代码

    $endpoint = "/".$page_id."/photos";
    
    foreach ($multiple_photos as $file_url):
    array_push($photos, $fb->request('POST',$endpoint,['url' =>$file_url,'published' => FALSE,]));
    endforeach;
    
    $uploaded_photos = $fb->sendBatchRequest($photos,  $page_access_token); 
    
    foreach ($uploaded_photos as $photo):
    array_push($data_post['attached_media'], '{"media_fbid":"'.$photo->getDecodedBody()['id'].'"}');
    endforeach;
    
    $data_post['message'] = $linkData['caption'];
    
    $data_post['published'] = FALSE;
    
    $data_post['scheduled_publish_time'] = $scheduled_publish_time;
    
    $response = $fb->sendRequest('POST', "/".$page_id."/feed", $data_post, $page_access_token);
    
    $post_id = $cresponse->getGraphNode()['id'];
    

    【讨论】:

      【解决方案3】:

      您现在可以在一个帖子中将多张图片发布到您的提要或页面:

      对于故事中的每张照片,使用带有参数published=false 的{user-id}/photos 端点上传未发布的照片​​。

      您将获得您上传的每张照片的 ID,如下所示:

      {
        "id": "10153677042736789"
      }
      

      使用 {user-id}/feed 端点并使用上传照片返回的 ID 发布多照片故事

       $response = $facebook->api("/me/feed", 'POST',
        array(
          'access_token=' => $access_token,
          'message' => 'Testing multi-photo post!',
          'attached_media[0]' => '{"media_fbid":"1002088839996"}',
          'attached_media[1]' => '{"media_fbid":"1002088840149"}'
        )
      );
      

      来源:Publishing a multi-photo story

      【讨论】:

      • 正如此处的 FB 文档中明确提到的那样[链接:developers.facebook.com/docs/graph-api/photo-uploads#upload],这不适用于 PAGES。我自己试了一下,尽管图片已成功上传,但它们根本没有出现在帖子中。所以,请更正你的答案。
      • 这对我不起作用。见我最近的问题:stackoverflow.com/questions/44245608/…
      • 有效,但如果我尝试更新现有帖子,则会抛出 无法编辑对象
      • 这也适用于使用版本将多图像发布到特定页面。 3.2. (过去,我很难通过旧版本的 API 在页面上发布多张图片。)
      【解决方案4】:

      无法在同一个图形 API 调用中发布多张照片。

      查看文档:https://developers.facebook.com/docs/graph-api/reference/user/photos

      【讨论】:

        【解决方案5】:

        您可以按照此处所述进行批量请求:https://stackoverflow.com/a/11025457/1343690

        但循环浏览图像并直接发布它们很简单。

        foreach($photos as $photo)
        {
               //publish photo
        }
        


        编辑:

        (关于墙上照片的分组)

        如果某些照片被上传到同一个相册,这个分组是由 facebook 自动完成的。

        目前您无法通过 Graph API在群组中创建相册 - 不支持(截至目前),请参阅 this bug。

        但您可以这样做 - 创建手动相册,然后通过 - 获取 album_id
        \GET /{group-id}/albums,然后用album_id的代码代替group_id-

        foreach($photos as $photo){
           $facebook->api("/{album-id}/photos", "POST", array(
              'access_token=' => $access_token,
              'name' => 'This is a test message',
              'url' => $photo
              )
           );
        }
        

        我已经测试过了,看看结果-

        【讨论】:

        • 是的,但在循环的情况下,视觉上会出现不同的帖子。主要想法是在一个“帖子”中保留 4-5 张照片(如所附屏幕截图所示)。
        • 哈哈。你不用担心那个。您共享的屏幕截图来自墙上。如果在短时间内发布,Facebook 会自动将它们分组。你也会得到这个。
        • hmm... 不,例如,它不会合并两张图片。我刚试过。
        • 我很高兴这有帮助。你能检查一下我的老问题吗:stackoverflow.com/a/23021358/1343690 - 这是正确的做法
        • 并没有完全帮助,但我非常感谢您的努力 :) 事实上,我目前正在编写一个服务,它应该自动发布这样的帖子,当然。所以我不能强迫用户手动创建相册:)
        猜你喜欢
        • 1970-01-01
        • 2013-02-27
        • 1970-01-01
        • 1970-01-01
        • 2022-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-31
        相关资源
        最近更新 更多