40 votes

Publication d'un lien vidéo intégré à l'aide de l'API Graph Facebook

Lorsque connecter manuellement un lien vidéo (YouTube, Vimeo, etc) pour un poste en utilisant le Facebook de l'interface web, Facebook reconnaît automatiquement le lien d'une vidéo, et permet au message d'état résultant de la lecture de la vidéo en ligne. La vidéo est affichée comme un lecteur intégré dans le Mur ou le fil d'Actualité.


Voici un exemple de ce qu'une vidéo, on dirait que, après l'affichage manuellement.

Embedded Video


Lors de la publication d'un lien à l'aide de l'API Graphique, la vidéo n'est pas intégré.

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


Je soupçonne que la réponse est liée à l' source argument, mais je ne suis pas sûr de ce que l'URL devrait être là. En spécifiant la même URL mène juste à un poste n'a pas de vignette de l'image que ce soit.

source: UNE URL à une animation Flash ou un fichier vidéo pour être incorporé dans le post. read_stream.

Comment peut-on la même intégré comportement de l'être accompli en utilisant l'API Graphique seul?

49voto

Anomie Points 43759

Il semble que vous deviez extraire vous-même les URL du swf réel de la page et de la vignette. 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 puissiez 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 URL http://www.youtube.com/e/<code> pour la source et http://img.youtube.com/vi/<code>/0.jpg pour la photo.

6voto

eric Points 63

Voici comment poster une vidéo manuellement pour YOUTUBE et VIMEO (difficile à trouver en ligne). Spécifiquement si vous voulez que la valeur LINK pointe 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
                }
 

4voto

mindriot Points 4318

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 vous les publiez 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
 

1voto

Jacob Robinson Points 157

Ne pas utiliser / feed, utiliser / links (https://graph.facebook.com/me/links/) et simplement POST les paramètres "message" et "link" en utilisant le format d'URL YouTube / watch? V = ZL7nV7WwJKg. / feed n'a jamais fonctionné pour moi, il vient de publier un graphique statique et un lien, mais je voulais qu'il soit réellement intégré dans Facebook, comme c'est le cas lorsque vous partagez la vidéo de YouTube à Facebook. Fonctionne comme un charme.

1voto

giorgos Points 98

Cela ne fonctionnera pas pour l'affichage dans GROUPS sur / feeds ou / links. Voir ici http://bit.ly/1k34IEu & ici http://bit.ly/IGtcrY . S'il vous plaît upvote le problème afin d'être corrigé sous peu.

/ links est un duplicata du / feeds qui montre uniquement les posts de type link postés par l'utilisateur lui-même.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X