wake-up-neo.net

Posten eines eingebetteten Videolinks mithilfe der Facebook Graph-API

Wenn Sie einen Videolink (von YouTube, Vimeo usw.) manuell über die Facebook-Weboberfläche an einen Beitrag anhängen, erkennt Facebook den Link automatisch als Video und ermöglicht der resultierenden Statusmeldung, das Video inline abzuspielen. Das Video wird als eingebetteter Player in der Pinnwand oder im Newsfeed angezeigt.


Hier ist ein Beispiel, wie ein eingebettetes Video nach dem manuellen Posten aussieht.

Embedded Video


Beim Posten eines Links mit der Graph-API wird das Video nicht eingebettet.

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


Ich vermute, dass die Antwort mit dem Argument source zusammenhängt, bin mir aber nicht sicher, welche URL dort stehen soll. Die Angabe derselben URL führt nur zu einem Beitrag ohne Miniaturbild.

Quelle : Eine URL zu einem Flash-Film oder einer Videodatei, die in den Beitrag eingebettet werden soll. read_stream.

Wie kann dasselbe eingebettete Verhalten erreicht werden, wenn nur die Graph-API verwendet wird?

40
Ryan McGeary

Anscheinend müssen Sie die URLs der aktuellen SWF-Datei auf der Seite und das Miniaturbild selbst extrahieren. Zum Beispiel scheint dies zu funktionieren:

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

Anscheinend können Sie aus der Seiten-URL eine gültige Quelle und ein gültiges Bild generieren. Die URL sieht aus wie http://www.youtube.com/watch?v=<code>; Nimm den Code (3aICB2mUu2k hier) und füge ihn in die URLs ein http://www.youtube.com/e/<code> für die Quelle und und http://img.youtube.com/vi/<code>/0.jpg für das Bild.

49
Anomie

So posten Sie ein Video manuell für YOUTUBE und VIMEO (schwer online zu finden). Insbesondere, wenn Sie möchten, dass der LINK-Wert auf die Website/den Blog-Beitrag eines Benutzers verweist, von dem er stammt.

                //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
dandan

Das Teilen als Link mit/links anstelle von/feed scheint besser zu funktionieren. YouTube-, Vimeo- und Facebook-Videos werden so eingebettet, als würden sie manuell gepostet.

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
mindriot

Verwende nicht/feed, verwende/links (https://graph.facebook.com/me/links/) und einfach POST "message" und "link" Parameter über YouTube/watch? v = ZL7nV7WwJKg URL-Format./feed hat bei mir nie funktioniert, es wurde nur eine statische Grafik und ein Link gepostet, aber ich wollte, dass es tatsächlich eingebettet auf Facebook wiedergegeben wird, wie beim Teilen des Videos von YouTube auf Facebook .

1
Jacob Robinson

Das Posten in GROUPS auf/feeds oder/links funktioniert nicht. Siehe hier . Bitte stimmen Sie dem Problem zu, damit es bald behoben werden kann.

/ links ist ein Duplikat von/feeds, das nur vom Benutzer selbst gepostete Posts vom Typ link anzeigt.

1
giorgos

Versuchen Sie stattdessen, den Link als Nachrichtenattribut zu veröffentlichen. Bei mir funktioniert das so.

message = your message + link
0
Devaroop

Wenn Sie über die API eine SWF-Datei oder ein Video freigeben, wird auf Facebook nur ein Miniaturbild angezeigt, wenn es sich um Youtube handelt. Und das ist so gewollt wie bei Facebook. Überprüfen Sie diesen Link

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

0
Vikash Singhal