Facebook Graph API:发布包含多个视频和照片的帖子
Posted
技术标签:
【中文标题】Facebook Graph API:发布包含多个视频和照片的帖子【英文标题】:Facebook Graph API: Publish post with multiple videos and photos 【发布时间】:2017-11-14 11:05:17 【问题描述】:我尝试使用 php SDK 发布包含多个视频和照片的帖子。我使用批处理请求上传了视频和照片并获得了 ID。然后我使用 attach_media 传递媒体 ID 和发布数据。单张或多张照片都可以正常工作。但不适用于单个视频或多个视频。我收到此错误:“图表返回错误:(#10) 应用程序没有执行此操作的权限”,只要视频的 id 包含在 attach_media 中。
这是我使用的代码:
$fb = $this->init(); try // Returns a Facebook\FacebookResponse object
$publishData = [ 'message' => $post['content']];
if(count($media_ids) > 0)
$publishData ['attached_media'] = [];
foreach($media_ids as $key => $media_id)
array_push($publishData['attached_media'],'"media_fbid":"' . $media_id . '"');
$response = $fb->post(
'/me/feed',$publishData
,
$accessToken
);
catch(FacebookResponseException $e)
echo 'Graph returned an error: ' . $e->getMessage();
echo $e->getTraceAsString();
exit;
catch(FacebookSDKException $e)
echo 'Facebook SDK returned an error: ' . $e->getMessage();
echo $e->getTraceAsString();
exit;
$graphNode = $response->getGraphNode();
有没有办法解决这个问题。谢谢。
【问题讨论】:
你找到方法了吗? 你找到方法了吗? 【参考方案1】:事实上,您不能混合使用照片和视频。 Facebook 的 API 不允许这样做。你可以:
包含视频 + 文字(说明)的帖子 包含多张照片+文字的帖子要发布视频,您必须点击
POST https://graph-video.facebook.com/v10.0/<page id>/videos?file_url=<public file URL>&access_token=<your access token>&published=true&description=<text>
file_url
和 description
应该是 URL 编码的。
要发布多张照片,您首先要“上传”照片,结果您将拥有 ID。您设置为 attached_media
参数的那些 id。
获取照片 ID:
POST https://graph.facebook.com/<page id>/photos?url=<public file URL>&access_token=<access token>&published=false
注意published=false
。这很重要。否则,您将发布包含单张照片的页面帖子。
最后发布实际的页面帖子:
POST https://graph.facebook.com/<page id>/feed?message=<text>&access_token=<access token>&attached_media[0]="media_fbid":"<id>"&attached_media[1]="media_fbid":"<id>"
附: 此方法假定您已将内容上传到其他地方,并且您拥有可访问此内容的公共 URL。如果您有原始文件并且想要将它们上传到 Facebook,那么您必须采用另一种方法。
【讨论】:
Facebook 允许通过 GUI 做很多事情。这些事情通过 API 是不可能的,因为他们不想在更高级别上实现自动化。【参考方案2】:我知道已经有一段时间了,但我也遇到了同样的问题,现在是 2020 年......
我能够在页面时间轴中显示视频的唯一方法是使用以下 Facebook 文档,该文档涵盖了使用 Facebook SDK for PHP 将视频上传和发布到用户时间轴。
https://developers.facebook.com/docs/php/howto/example_upload_video
这显然不是最好的方法,但至少视频出现在时间轴上并带有一些标题和说明。
$data =
[
'title' => 'Your title',
'description' => 'Your description'
];
$response = $fb->uploadVideo($pageId, $videoUrl, $data, $token);
注意:videoUrl
必须是相对路径,因为 FacebookFile 类使用像 filesize
这样的函数。
【讨论】:
【参考方案3】:Facebook 不允许在业务页面上直接发布包含多个视频和照片的帖子。但是,可以在个人页面上作为替代解决方案,您可以在个人页面上创建帖子并在企业页面上分享。
观看此视频了解更多信息:https://www.youtube.com/watch?v=AoK_1S71q1o
【讨论】:
以上是关于Facebook Graph API:发布包含多个视频和照片的帖子的主要内容,如果未能解决你的问题,请参考以下文章
Facebook Graph API GET 请求 - 应包含“字段”参数(Swift,Facebook SDK v4.5.1)
Facebook Graph API GET 请求 - 应包含“字段”参数(Swift,Facebook SDK v4.5.1)
如何在 android 应用程序中使用多个 Graph API 获取 Facebook Notes Items 的评论?
如何使用 Graph API 获取家乡的 facebook 好友列表?