在Facebook视频上传到页面的行动号召 - 图谱API

时间:2014-10-27 11:27:31

标签: facebook facebook-graph-api curl file-upload

我有以下工作代码用于将视频上传到Facebook页面时间轴:

$file = $my_video;
$video_title = $my_title;
$video_desc = $my_description;
$post_url = "https://graph-video.facebook.com/".$fb_page_id."/videos?"
         . "title=" . $video_title. "&description=" . $video_desc
         . "&access_token=". $access_token;

$ch = curl_init();
$data = array('name' => 'file', 'file' => '@'.realpath($file));// use realpath
curl_setopt($ch, CURLOPT_URL, $post_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$res = curl_exec($ch);  
curl_close($ch);
$video_id = $res['id'];

我想在请求中添加一个号召性用语,记录在案here from Facebook

我尝试了以下内容:

$fb_action = strtoupper($the_action);
$fb_action_link = $action_link;
$call_to_action = "&call_to_action={'type':'".$fb_action."','value':{'link':'".$fb_action_link."'}}";

$post_url = "https://graph-video.facebook.com/".$fb_page_id."/videos?"
         . "title=" . $video_title. "&description=" . $video_desc . $call_to_action
         . "&access_token=". $access_token;

我也尝试过:

$call_to_action = "&call_to_action=['type','".$fb_action."','value',['link','".$fb_action_link."']]";

我一直在Facebook上收到错误。有谁知道这是格式化问题吗?有关正确方法的任何建议吗?非常感谢!

1 个答案:

答案 0 :(得分:1)

所以问题实际上是数组的格式化。我发现http_build_query()是解决方案,显然Facebook开发人员如何编码他们的params。这篇文章给了我很多帮助 - > passing arrays as url parameter

最终解决方案如下:

$action_call_array = array('type' => $fb_action, 'value' => array('link' => $fb_action_link));
$params = http_build_query(array('call_to_action' => $action_call_array));

$post_url = 'https://graph-video.facebook.com/'.$fb_page_id.'/videos?'
         . 'title=' . $video_title. '&description=' . $video_desc . '&' . urldecode($params) 
         . '&access_token='. $m_page_access_token;

将$ post_url插入curl然后效果很好!希望这有助于某人,花了一些时间来找到并测试正确的答案,看起来这个解决方案适用于其他带有数组的Facebook终端。