In diesem Dokument erfährst du, wie du mithilfe der Facebook Stories API auf Facebook-Seiten Stories veröffentlichen kannst.
Um eine Story zu veröffentlichen, muss deine App die folgenden Schritte durchführen:
Bei diesem Leitfaden wird vorausgesetzt, dass du die Übersicht zur Pages API gelesen und die erforderlichen Komponenten implementiert sowie den Leitfaden zu den ersten Schritten erfolgreich abgeschlossen hast.
Deine App-Nutzer*innen müssen auf der Seite, die im Seiten-Zugriffsschlüssel angegeben ist, die Aufgabe CREATE_CONTENT durchführen können und deiner App die folgenden Berechtigungen erteilen:
pages_manage_postspages_read_engagementpages_show_listWenn du in deinen API-Anfragen einen geschäftlichen Systemnutzer verwendest, brauchst du auch die Berechtigung business_management.
Du musst ein Foto oder Video angeben, das den folgenden Spezifikationen entspricht.
| Eigenschaft | Angabe |
|---|---|
Dateityp | JPEG, BMP, PNG, GIF, TIFF |
Dateigröße | Dateien dürfen nicht größer als 4 MB sein. Bei PNG-Dateien sollte die Größe von 1 MB nicht überschritten werden, da das Bild sonst verpixelt erscheinen kann. |
| Eigenschaft | Angabe | ||
|---|---|---|---|
Dateityp | MP4 (empfohlen) | ||
Seitenverhältnis | 9 x 16 | ||
Auflösung | 1080 x 1920 Pixel (empfohlen) Mindestanforderung ist 540 x 960 Pixel | ||
Bildrate | 24 bis 60 Einzelbilder pro Sekunde | ||
Dauer | 3 bis 90 Sekunden Ein Reel, das als Story auf einer Facebook-Seite veröffentlicht wird, darf nicht länger als 60 Sekunden sein. | ||
Videoeinstellungen |
| ||
Audioeinstellungen |
|
GET-Anfragen zum Anzeigen einer Liste deiner Storys aufzunehmen, musst du dein Facebook-Story-Archiv auf
aktivieren.
Wenn du einen API-Aufruf testest, kannst du den access_token-Parameter einbeziehen, der auf deinen Zugriffsschlüssel festgelegt ist. Wenn du jedoch sichere Aufrufe über deine App ausführst, verwende die Klasse des Zugriffsschlüssels.
Die Codebeispiele in diesem Dokument wurden so formatiert, dass sie gut lesbar sind. Ersetze Werte in Fett- oder Kursivschrift wie page_id durch deine Werte.
Um eine Video-Story auf einer Facebook-Seite zu veröffentlichen, startest du eine Video-Upload-Sitzung mit Meta-Servern, lädst das Video auf Meta-Server hoch und veröffentlichst dann die Video-Story.
Um eine Upload-Sitzung zu starten, sende eine POST-Anfrage an den /page_id/video_stories-Endpunkt, wobei page_id die ID für deine Facebook-Seite ist. Der Parameter upload_phase muss dabei auf start festgelegt sein.
curl -X POST "https://graph.facebook.com/v24.0/page_id/video_stories" \
-d '{
"upload_phase":"start",
}'
Bei Erfolg erhält deine App eine JSON-Antwort mit der ID für das Video und der Facebook-URL, unter der du das Video hochlädst.
{
"video_id": "video_id",
"upload_url": "https://rupload.facebook.com/video-upload/v24.0/video_id",
} Nachdem du nun eine Upload-Sitzung gestartet und die Upload-URL erhalten hast, kannst du dein Video hochladen. Du hast zwei Möglichkeiten:
Um eine gehostete Datei hochzuladen, sende eine POST-Anfrage an den upload_url-Endpunkt, den du im Initialisierungsschritt erhalten hast. Diese sollte die folgenden Parameter enthalten:
file_url festgelegt auf die URL für deine VideodateiStelle sicher, dass der Host rupload.facebook.com ist.
Die API lehnt jetzt Dateien ab, die auf Sites gehostet werden, die den Zugriff über robots.txt einschränken. Entwickler*innen müssen sicherstellen, dass die Hosting-Site den Nutzer-Agent „facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)“ zulässt, um die gehostete Datei abzurufen.
Auf Meta CDN gehostete Dateien (z. B. fbcdn-URLs) werden abgelehnt. Stattdessen können Entwickler*innen das Crossposting-Feature verwenden, um ein Video auf mehreren Seiten zu veröffentlichen, ohne das Video auf jede einzelne Seite hochzuladen. Mehr über das Crossposten erfährst du in unserer detaillierten Anleitung.
curl -X POST "https://rupload.facebook.com/video-upload/v24.0/video_id" \
-H "file_url: https://some.cdn.url/video.mp4"
Um eine lokale Datei hochzuladen, sende eine POST-Anfrage an den upload_url-Endpunkt, den du im Initialisierungsschritt erhalten hast. Diese sollte die folgenden Parameter enthalten:
offset festgelegt auf 0file_size festgelegt auf die Gesamtgröße des hochgeladenen Videos in Bytecurl -X POST "https://rupload.facebook.com/video-upload/v24.0/video_id" \
-H "offset: 0" \
-H "file_size: file_size_in_bytes" \
--data-binary "@/path/to/file/my_video_file.mp4"
Bei erfolgreichem Upload erhält deine App eine JSON-Antwort, bei der success auf true gesetzt ist.
{
"success": true
} Wenn der Video-Upload unterbrochen wurde, kannst du den Upload entweder neu starten oder fortsetzen.
POST-Anfrage und lege offset auf 0 fest. POST-Anfrage erneut, wobei offset auf den bytes_transfered-Wert aus einer Status-Prüfung festgelegt ist.Um den Status deines Videos zu prüfen, sende während des Uploads oder der Veröffentlichung eine GET-Anfrage an den /video_id-Endpunkt. Schließe den folgenden Parameter ein:
fields festgelegt auf statuscurl -X GET "https://graph.facebook.com/v24.0/video_id" \
-d "fields=status"
Wenn der Vorgang erfolgreich verläuft, erhält deine App eine JSON-Antwort, die Folgendes enthält:
status-Objekt, das Folgendes enthält:
video_status mit dem Wert ready, processing, expired oder erroruploading_phase-Objekt mit den folgenden Schlüssel-Wert-Paaren:
status festgelegt auf in_progress, not_started, complete oder errorbytes_transfered festgelegt auf die hochgeladenen Byte. Kann als Wert für offset verwendet werden, wenn der Upload unterbrochen wurde.processing_phase-Objekt mit den folgenden Schlüssel-Wert-Paaren:
status festgelegt auf in_progress, not_started, complete oder errorprocessing_phase-Objekt mit den folgenden Schlüssel-Wert-Paaren:
status festgelegt auf in_progress, not_started, complete oder errorpublish_status festgelegt auf published oder not_publishedpublish_time festgelegt auf den UNIX-Zeitstempel der tatsächlichen Zeit oder des Zeitpunkts der Veröffentlichung
Die folgende Antwort zeigt eine Datei, die erfolgreich hochgeladen wurde.
{
"status": {
"video_status": "processing",
"uploading_phase": {
"status": "in_progress",
"bytes_transfered": 50002
},
"processing_phase": {
"status": "not_started"
}
"publishing_phase": {
"status": "not_started",
"publish_status": "published",
"publish_time": 234523452
}
}
}
|
Die folgende Antwort zeigt einen Fehler, der in der Verarbeitungsphase aufgetreten ist.
{
"status": {
"video_status": "processing",
"uploading_phase": {
"status": "complete"
},
"processing_phase": {
"status": "not_started",
"error": {
"message": "Resolution too low. Video must have a minimum resolution of 540p."
}
}
"publishing_phase": {
"status": "not_started"
}
}
}
|
Um auf deiner Seite eine Video-Story zu veröffentlichen, sende eine POST-Anfrage an den /page_id/video_stories-Endpunkt und füge folgende Parameter hinzu:
video_id festgelegt auf die ID für dein hochgeladenes Videoupload_phase festgelegt auf finishcurl -X POST "https://graph.facebook.com/v24.0/page_id/video_stories" \
-d '{
"video_id": "video_id",
"upload_phase": "finish"
}'
Wenn der Vorgang erfolgreich verläuft, erhält deine App eine JSON-Antwort, die die folgenden Schlüssel-Wert-Paare enthält:
success festgelegt auf truepost_id festgelegt auf die ID deines Story-Beitrags{
"success": true,
"post_id": 1234
}
In der Referenz zu Seitenbeiträgen
erfährst du, wie du mit dem /page_id/photos-Endpunkt ein Foto auf Meta-Server hochladen kannst. Schließe unbedingt den Parameter published ein und lege ihn auf false fest.
Um auf deiner Seite eine Foto-Story zu veröffentlichen, sende eine POST-Anfrage an den /page_id/video_stories-Endpunkt und füge folgende Parameter hinzu:
video_id festgelegt auf die ID deines hochgeladenen Videoscurl -X POST "https://graph.facebook.com/v24.0/page_id/photo_stories" \
-d '{
"photo_id": "photo_id"
}'
Wenn der Vorgang erfolgreich verläuft, erhält deine App eine JSON-Antwort, die die folgenden Schlüssel-Wert-Paare enthält:
success festgelegt auf truepost_id festgelegt auf die ID deines Story-Beitrags{
"success": true,
"post_id": 1234
}
Um eine Liste aller Stories für eine Seite und Daten zu jeder Story abzurufen, sende eine GET-Anfrage an den /page_id/stories-Endpunkt, wobei page_id die ID für die Seite ist, die du anzeigen möchtest.
curl -i -X GET "https://graph.facebook.com/v24.0/page_id/stories"
Bei Erfolg erhält deine App eine JSON-Antwort mit einem Array von Objekten, wobei jedes Objekt Informationen über eine auf der Seite veröffentlichte Story enthält. Jedes Objekt enthält die folgenden Schlüssel-Wert-Paare:
post_id festgelegt auf die ID des veröffentlichten Story-Beitragsstatus festgelegt auf PUBLISHED, ARCHIVEDcreation_time festgelegt auf den UNIX-Zeitstempel, zu dem die Story veröffentlicht wurdemedia_type festgelegt auf video oder photomedia_id festgelegt auf die ID des Videos oder Fotos in dem Story-Beitragurl festgelegt auf die Facebook-URL für den Story-Beitrag wie z. B. https://facebook.com/stories/8283482737484972{
"data": [
{
"post_id": "post_id",
"status": "PUBLISHED",
"creation_time": "123456",
"media_type": "video",
"media_id": "video_id",
"url": "https://facebook.com/stories…"
},
{
"post_id": "post_id",
"status": "PUBLISHED",
"creation_time": "123456",
"media_type": "photo",
"media_id": "photo_id",
"url": "https://facebook.com/stories…"
},
{
"post_id": "post_id",
"status": "ARCHIVED",
"creation_time": "123456",
"media_type": "photo",
"media_id": "photo_id",
"url": "https://facebook.com/stories…"
},
...
],
}
Du kannst Stories mit den Parametern since und until nach Status, veröffentlicht oder archiviert und Datum filtern.
In diesem Leitfaden findest du weitere Informationen zu den Endpunkten und Konzepten, die in diesem Dokument erwähnt wurden.