Lorsque vous joignez manuellement un lien vidéo (de YouTube, Vimeo, etc.) à une publication à l'aide de l'interface Web de 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. La vidéo s'affiche en tant que lecteur intégré dans le mur ou le fil d'actualités.
Voici un exemple de l'apparence d'une vidéo intégrée après sa publication manuelle.
Lors de la publication d'un lien à l'aide de l'API Graph, la vidéo n'est pas intégrée.
curl -F 'access_token=...' \
-F 'message=Link to YouTube' \
-F 'link=http://www.youtube.com/watch?v=3aICB2mUu2k' \
https://graph.facebook.com/me/feed
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à. La spécification de la même URL conduit simplement à une publication sans image miniature.
source : une URL vers un film Flash ou un fichier vidéo à incorporer dans la publication. read_stream.
Comment le même comportement intégré peut-il être accompli en utilisant uniquement l'API Graph?
Il semble que vous devez extraire vous-même les URL du swf réel dans la page et l'image miniature. 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 URL http://www.youtube.com/e/<code>
pour la source et et http://img.youtube.com/vi/<code>/0.jpg
pour la photo.
Voici comment publier une vidéo manuellement pour YOUTUBE et VIMEO (difficile à trouver en ligne). Plus précisément si vous souhaitez 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
}
Le partage en tant que lien avec/links au lieu de/feed semble fonctionner mieux. Les vidéos YouTube, Vimeo et Facebook sont intégrées comme si elles étaient publié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
N'utilisez pas/feed, utilisez/links (https://graph.facebook.com/me/links/) et simplement POST "message" et "link" paramètres en utilisant YouTube/watch? v = ZL7nV7WwJKg URL format./feed n'a jamais fonctionné pour moi, il a juste publié 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 .
Cela ne fonctionnera pas pour la publication dans GROUPES sur/feeds ou/links. Voir ici . Veuillez voter pour le problème afin qu'il soit corrigé prochainement.
/ links est un doublon des/feeds qui n'affiche que les publications de type lien publiées par l'utilisateur lui-même.
Essayez plutôt de publier le lien en tant qu'attribut de message, cela fonctionne pour moi de cette façon.
message = your message + link
Le partage à l'aide de l'API de tout fichier .swf ou vidéo ne montrera pas de miniature sur Facebook à moins que ce ne soit sur youtube. Et c'est par conception selon Facebook. Vérifiez ce lien