首页 文章

使用Facebook Graph API发布嵌入的视频链接

提问于
浏览
40

当使用Facebook网络界面手动将视频链接(从YouTube,Vimeo等)附加到帖子时,Facebook会自动将该链接识别为视频,并允许生成的状态消息以内嵌方式播放视频 . 视频在Wall或News Feed中显示为嵌入式播放器 .


以下是手动发布后嵌入视频的外观示例 .

Embedded Video


使用Graph API发布链接时,视频未嵌入 .

curl -F 'access_token=...' \
     -F 'message=Link to YouTube' \
     -F 'link=http://www.youtube.com/watch?v=3aICB2mUu2k' \
     https://graph.facebook.com/me/feed

Not-Embedded Video


我怀疑答案与 source 参数有关,但我不确定URL应该在那里 . 指定相同的URL只会导致没有缩略图的帖子 .

source:要嵌入帖子中的Flash电影或视频文件的URL . read_stream .

How can the same embedded behavior be accomplished by using the Graph API alone?

7 回答

  • 6

    与/ links共享链接而不是/ feed似乎更好用 . YouTube,Vimeo和Facebook视频都是嵌入式的,就像手动发布一样 .

    curl -F 'access_token=...' \
         -F 'message=Link to YouTube' \
         -F 'link=http://www.youtube.com/watch?v=3aICB2mUu2k' \
         https://graph.facebook.com/me/links
    
  • 4

    看来你必须自己提取页面中实际swf的URL和缩略图 . 例如,这似乎有效:

    curl -F 'access_token=...' \
         -F 'message=Link to YouTube' \
         -F 'link=http://www.youtube.com/watch?v=3aICB2mUu2k' \
         -F 'source=http://www.youtube.com/v/3aICB2mUu2k' \
         -F 'picture=http://img.youtube.com/vi/3aICB2mUu2k/0.jpg' \
         https://graph.facebook.com/me/feed
    

    您似乎可以从页面URL生成有效的源和图片 . 该网址类似于 http://www.youtube.com/watch?v=<code> ;获取代码(此处为3aICB2mUu2k)并将其插入到源的URL http://www.youtube.com/e/<code> 和图片的 http://img.youtube.com/vi/<code>/0.jpg .

  • 0

    以下是如何为YOUTUBE和VIMEO手动发布视频(很难在线查找) . 特别是如果您希望LINK值指向用户的网站/博客文章 .

    //search for youtube.com and vimeo.com in the 'link' value
                    if (preg_match("/youtube.com/", $model->link) || preg_match("/youtu.be/", $model->link)){
                        if (preg_match('%(?:youtube\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $model->link, $match))
                        {
                            $video_code = $match[1];
                        }
                       $source = 'http://www.youtube.com/e/'.$video_code; 
                   $picture = 'http://img.youtube.com/vi/'.$video_code.'/0.jpg';
                    }
                    else if (preg_match("/vimeo.com/", $model->link))
                    {
                        if (preg_match('/vimeo\.com\/(clip\:)?(\d+).*$/', $model->link, $match))
                        {
                            $video_code = $match[2];
                         }
                        /* Get Vimeo thumbnail */
                        $hash = unserialize(file_get_contents("http://vimeo.com/api/v2/video/$video_code.php"));
                        $picture = $hash[0]['thumbnail_medium'];  
                        $source = 'https://secure.vimeo.com/moogaloop.swf?clip_id='.$video_code.'&autoplay=1';
                    }
    
                    $args = array(
                    'message'   => //user's comment
                    'name' => //Title of post
                    'link'      => 'http://...'//link to video on user's website
    
                    'source' => $source,
                    'picture' => $picture,
                    );
    
                    if ($this->_facebook->api("/".$this->facebookUserID."/feed", "post", $args)){
                    //posted to facebook
                    }
    
  • 0

    不要使用/ feed,使用/链接(https://graph.facebook.com/me/links/),只需使用YouTube / watch?v = ZL7nV7WwJKg URL格式发布“消息”和“链接”参数 . / feed从来没有为我工作,它只是发布了一个静态的图形和链接,但我希望它实际上在Facebook上嵌入,就像你从YouTube分享视频到Facebook . 奇迹般有效 .

  • 1

    它不适用于在/ feed或/ links上的GROUPS中发布 . 见here . 请提出问题,以便尽快修复 .

    / links是/ feeds的副本,仅显示用户自己发布的链接类型的帖子 .

  • 49

    相反,尝试将链接发布为消息属性,它对我来说就是这样 .

    message = your message + link
    
  • 1

    使用API共享任何.swf文件或视频都不会在Facebook上显示缩略图,除非它是youtube . 这是按照facebook的设计 . 检查此链接

    https://developers.facebook.com/bugs/589975484398226?browse=external_tasks_search_results_526fc388b99e18881434478

相关问题