Проводка встроенной видеосвязи с использованием API-интерфейса Facebook Graph
При ручном подключении видеозаписи (с YouTube, Vimeo и т.д.) к сообщению с помощью веб-интерфейса Facebook, Facebook автоматически распознает ссылку как видео и позволяет полученному сообщению статуса воспроизводить видеоролик. Видео отображается как встроенный проигрыватель в ленте "Стена" или "Новости".
Вот пример того, как выглядит встроенное видео после публикации вручную.
![Embedded Video]()
При публикации ссылки с использованием 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-адреса просто приводит к сообщению без миниатюрного изображения.
источник: URL-адрес Flash-фильма или видеофайла для включения в сообщение. read_stream.
Как можно выполнить одно и то же встроенное поведение, используя только API Graph?
Ответы
Ответ 1
Похоже, вам нужно извлечь URL-адреса фактического swf на странице и миниатюрное изображение самостоятельно. Например, это работает:
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-адреса страницы. URL-адрес выглядит как http://www.youtube.com/watch?v=<code>
; возьмите код (3aICB2mUu2k здесь) и вставьте его в URL http://www.youtube.com/e/<code>
для источника и и http://img.youtube.com/vi/<code>/0.jpg
для изображения.
Ответ 2
Здесь, как отправить видео вручную для 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 comment
'name' => //Title of post
'link' => 'http://...'//link to video on user website
'source' => $source,
'picture' => $picture,
);
if ($this->_facebook->api("/".$this->facebookUserID."/feed", "post", $args)){
//posted to facebook
}
Ответ 3
Обмен ссылками как /link вместо/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
Не используйте/пишите, используйте/ссылки (https://graph.facebook.com/me/links/) и просто параметры сообщения "сообщение" и "ссылка" POST с помощью URL-адреса YouTube/watch? v = ZL7nV7WwJKg формат. /feed никогда не работал у меня, он просто размещал статическую графику и ссылку, но я хотел, чтобы она фактически играла встроенную в Facebook, как это происходит, когда вы делитесь видео с YouTube на Facebook. Работает как шарм.
Ответ 5
Он не будет работать для публикации в GROUPS on/feeds или /links.
См. здесь. Пожалуйста, поддержите проблему, чтобы быть исправленной в ближайшее время.
/links - это дубликат /feeds, который
только показывает сообщения типа link, отправленные самим пользователем.
Ответ 6
Вместо этого попробуйте отправить ссылку как атрибут сообщения, она работает для меня таким образом.
message = your message + link
Ответ 7
Совместное использование с помощью API любого файла .swf или видео не будет показывать миниатюру на facebook, если не будет ее youtube. И это по дизайну в соответствии с facebook.
Проверьте эту ссылку
https://developers.facebook.com/bugs/589975484398226?browse=external_tasks_search_results_526fc388b99e18881434478