Affichage d'un lien vidéo intégré à L'aide de L'API Facebook Graph

Facebook facebook reconnaît automatiquement le lien comme une vidéo et permet au message d'état résultant de lire la vidéo en ligne.

Lorsque vous attachez manuellement un lien vidéo (à partir de YouTube, Vimeo, etc.) à un poste à l'aide de L'interface Web de Facebook, Facebook reconnaît automatiquement le lien comme une vidéo et permet au message d'état La vidéo est affichée en tant que lecteur intégré dans le mur ou le fil D'actualité.


Voici un exemple de ce à quoi ressemble une vidéo intégrée après la publication manuelle.

La Vidéo Intégrée


Lors de la publication d'un lien à L'aide de L'API Graph, la imbriqué.

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

Vidéo Non Intégrée


Je soupçonne que la réponse est liée à l'argument source, mais je ne suis pas sûr de ce que l'URL devrait être là. Spécifier la même URL conduit juste à un post sans image miniature que ce soit.

Source : URL vers un film Flash ou un fichier vidéo pour être incorporé dans le post. read_stream.

Comment le même comportement intégré peut-il être accompli en utilisant l'API Graph seule?

40
demandé sur Ryan McGeary 2011-03-08 05:20:49

7 réponses

Il semble que vous devez extraire les URL du swf réel dans la page et l'image miniature vous-même. Par exemple, cela semble fonctionner:

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

Il semble que vous pouvez générer une source et une image valides à partir de l'URL de la page. L'URL ressemble à http://www.youtube.com/watch?v=<code>; Prenez le code (3aicb2muu2k ici) et insérez-le dans les URLs http://www.youtube.com/e/<code> pour la source et et http://img.youtube.com/vi/<code>/0.jpg pour l'image.

49
répondu Anomie 2012-02-10 10:47:56

Voici comment poster une vidéo manuellement pour YOUTUBE et VIMEO (difficile à trouver en ligne). Plus précisément, si vous voulez avoir la valeur du lien pointant vers le site web/blog d'un utilisateur d'où il provient.

                //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
                }
6
répondu eric 2013-07-03 18:48:12

Le partage en tant que lien avec / links au lieu de / feed semble mieux fonctionner. Les vidéos YouTube, vimeo et Facebook sont intégrées comme si elles étaient affichées manuellement.

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
répondu mindriot 2012-02-04 23:33:20

Ne pas utiliser /feed, utiliser / links (https://graph.facebook.com/me/links/) et simplement poster" message "et" lien " paramètres en utilisant le YouTube / montre?v = format D'URL ZL7nV7WwJKg. facebook facebook / feed n'a jamais fonctionné pour moi, il vient de poster un graphique statique et un lien, mais je voulais qu'il joue réellement intégré sur Facebook comme il le fait lorsque vous partagez la vidéo de YouTube à Facebook. Fonctionne comme un charme.

1
répondu Jacob Robinson 2012-03-19 03:04:45

Cela ne fonctionnera pas pour l'affichage dans les groupes sur / feeds ou / links. Voir ici. Veuillez upvote la question pour être fixé bientôt.

/ links est un doublon des flux / qui affiche uniquement les messages de type lien postés par l'utilisateur eux-mêmes.

1
répondu giorgos 2015-07-31 08:28:43

Essayez plutôt de poster le lien En tant qu'attribut de message, cela fonctionne pour moi de cette façon.

message = your message + link
0
répondu Devaroop 2011-08-24 22:25:44

Partage en utilisant L'API any .fichier swf ou vidéo ne montrera pas une vignette sur facebook à moins que son youtube . Et c'est par conception selon facebook. Vérifiez ce lien

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

0
répondu Vikash Singhal 2014-04-26 04:58:06