Pubblicazione

L'API Video consente di pubblicare video su Pagine e gruppi. La pubblicazione su utenti non è supportata.

Puoi anche pubblicare reel su Pagine. Per maggiori informazioni consulta API Reels Publishing.

La procedura di pubblicazione dei video prevede la scelta di un protocollo di caricamento e l'invio di una richiesta POST al segmento /videos della Pagina o del gruppo di destinazione. L'API supporta sia protocolli di caricamento ripristinabili sia non ripristinabili. Ti consigliamo di utilizzare il protocollo di caricamento ripristinabile poiché è più versatile e può gestire in modo discreto le interruzioni di connessione.

Gli esempi in questo documento utilizzano un nodo Page ma si applicano allo stesso modo ai nodi Group.

Requisiti

Tutte le azioni di pubblicazione richiedono un token d'accesso e autorizzazioni appropriati in base al nodo di destinazione. Mentre esegui il test puoi generare facilmente token e concedere autorizzazioni alla tua app utilizzando il Tool di esplorazione per la API Graph. Fai riferimento alla nostra guida Primi passi per ulteriori informazioni su come eseguire questa operazione. Quando l'app è pronta per la produzione, probabilmente dovrai implementare Facebook Login per ottenere token e autorizzazioni dagli utenti della tua app.

Pubblicazione sulle Pagine

L'utente dell'app deve essere un amministratore della Pagina di destinazione. Avrai bisogno del token d'accesso della Pagina dell'utente dell'app, che dovrà concedere alla tua app le autorizzazioni pages_show_list, pages_read_engagement e pages_manage_posts.

Pubblicazione sui gruppi

L'utente dell'app deve essere un amministratore del gruppo di destinazione. Avrai bisogno del token d'accesso dell'utente dell'app, che dovrà concedere alla tua app l'autorizzazione publish_to_groups.

Caricamento ripristinabile

Il protocollo di caricamento ripristinabile è il protocollo di pubblicazione preferito poiché consente di suddividere video di grandi dimensioni in parti più piccole per evitare timeout. Tale funzione è particolarmente utile per video di grandi dimensioni in cui è più probabile che si verifichi un errore di connessione. Se si verifica un errore di connessione durante il caricamento di un video di grandi dimensioni, normalmente è necessario ricaricare l'intero video. Ma utilizzando il protocollo di caricamento ripristinabile sarà necessario ricaricare solo la parte interessata, in quanto quelle che sono già state caricate non dovranno essere ricaricate.

Puoi pubblicare un video su una Pagina o un gruppo. La pubblicazione prevede i seguenti passaggi:

  1. Inizializzazione di una sessione di caricamento nella Pagina o nel gruppo
  2. Caricamento di singole parti nell'ordine in cui devono essere assemblate
  3. Conclusione della sessione di caricamento

Al termine della sessione di caricamento, procederemo a riassemblare il video, codificarlo e pubblicarlo.

Limitazioni

I video sono limitati a 10 GB e 4 ore.

Passaggio 1: inizializzazione di una sessione di caricamento

Per inizializzare una sessione di caricamento di video, invia una richiesta POST all'endpoint Page Videos:

POST /v19.0/{page-id}/videos
  ?upload_phase=start
  &access_token={access-token}
  &file_size={file-size}

Includi i seguenti parametri:

Nome del parametroValore

upload_phase

start

access_token

Il tuo token d'accesso della Pagina se si pubblica su una Pagina oppure il tuo token d'accesso dell'utente se si pubblica su un gruppo.

file_size

Le dimensioni totali del file video in byte.

Esempio di richiesta

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "upload_phase=start" \
  -F "access_token=EAADI..." \
  -F "file_size=22420886"

Esempio di risposta

{
  "video_id":"2918040888250909",          //Capture this value (optional)
  "start_offset":"0",                     //Capture this value
  "end_offset":"1048576",
  "upload_session_id":"2918040901584241"  //Capture this value
}

Acquisisci i valori start_offset e upload_session_id restituiti dall'API. Li utilizzerai nel passaggio successivo per caricare la prima parte di video. Ti consigliamo di acquisire anche il valore video_id. Non ti servirà per la pubblicazione, ma sarà l'ID dell'eventuale video pubblicato.

Passaggio 2: caricamento delle singole parti

Carica ciascuna parte del tuo video nell'ordine di assemblaggio inviando richieste POST consecutive all'endpoint Page Videos:

POST /v19.0/{page-id}/videos
  ?upload_phase=transfer
  &access_token={access-token}
  &upload_session_id={upload-session-id}
  &start_offset={start-offset}
  &video_file_chunk={video-file-chunk}

Includi i seguenti dati come multipart/form-data nel corpo della richiesta:

Nome dati moduloValore

upload_phase

transfer

access_token

Il tuo token d'accesso della Pagina se si pubblica su una Pagina oppure il tuo token d'accesso dell'utente se si pubblica su un gruppo.

upload_session_id

Il tuo ID della sessione di caricamento.

start_offset

Il valore start_offset restituito nella risposta precedente.

video_file_chunk

Il nome della parte di video da caricare.

Ogni volta che carichi correttamente una parte, viene restituito un nuovo valore start_offset. Ripeti questa richiesta utilizzando il valore start_offset appena restituito e il nome della successiva parte di video da caricare (assegnato a video_file_chunk), quindi procedi gradualmente fino a caricare tutte le parti di video rimanenti.

Esempio di richiesta per la prima parte

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos"  \
  -F "upload_phase=transfer" \
  -F "upload_session_id=2918040901584241" \
  -F "access_token=EAADI..." \
  -F "start_offset=0" \
  -F "video_file_chunk=@/Users/...xaa"

Esempio di risposta

{
  "start_offset":"10485760",  //Value for second chunk
  "end_offset":"15728640"
}

Esempio di richiesta per la seconda parte

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos"  \
  -F "upload_phase=transfer" \
  -F "upload_session_id=2918040901584241" \
  -F "access_token=EAADI..." \
  -F "start_offset=10485760" \
  -F "video_file_chunk=@/Users/...xab"

Esempio di risposta

{
  "start_offset":"20971520",  //Value for third chunk
  "end_offset":"22420886"
}

Dopo aver caricato l'ultima parte, l'API dovrebbe rispondere con i valori start_offset e end_offset corrispondenti, a indicare che è possibile terminare la sessione di caricamento.

Esempio di risposta finale

{
  "start_offset":"22420886",  //When values match you can
  "end_offset":"22420886"     //end the upload session
}

Passaggio 3: conclusione della sessione di caricamento

Al termine della sessione di caricamento, procederemo a riassemblare il video completo, codificarlo e pubblicarlo sulla Pagina. Per terminare la sessione di caricamento, invia una richiesta POST finale all'endpoint Page Videos:

POST /v19.0/{page-id}/videos
  ?upload_phase=finish
  &access_token={access-token}
  &upload_session_id={upload-session-id}

Includi i seguenti parametri:

Nome del parametroValore

upload_phase

finish

access_token

Il tuo token d'accesso della Pagina se si pubblica su una Pagina oppure il tuo token d'accesso dell'utente se si pubblica su un gruppo.

upload_session_id

Il tuo ID della sessione di caricamento.

Puoi anche includere qualsiasi parametro aggiuntivo supportato dall'endpoint Page Videos, come title, description e thumb.

Esempio di richiesta

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos"  \
  -F "upload_phase=finish" \
  -F "access_token=EAADI..." \
  -F "upload_session_id=2918040901584241"

Esempio di risposta JSON

{
  "success":true
}

Quando ricevi questa risposta, significa che abbiamo iniziato ad assemblare e codificare il video completo. Dovresti essere in grado di vedere il video pubblicato entro pochi minuti.

Caricamento non ripristinabile

Ti consigliamo di caricare i file utilizzando il protocollo di caricamento ripristinabile poiché gestisce le interruzioni di connessione in modo più efficiente e supporta file di dimensioni maggiori. Se invece preferisci caricare i file utilizzando il protocollo di caricamento non ripristinabile, puoi farlo inviando una richiesta POST al segmento Page Videos e includendo il parametro source (per file video locali) o il parametro file_url (per file ospitati su un server pubblico) nel corpo della richiesta come multipart/form-data. Puoi anche includere qualsiasi parametro aggiuntivo supportato dall'endpoint Page Videos, come title, description e thumb.

Limitazioni

I video sono limitati a 1 GB e 20 minuti. Se il tuo file video è più grande, suddividilo in parti e pubblicalo utilizzando il protocollo di caricamento ripristinabile.

Esempio di richiesta per un file locale

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "access_token=EAADd..." \
  -F "source=@/Users/...incredible.mov"

Esempio di richiesta per un file ospitato

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "access_token=EAADd..." \
  -F "file_url=https://socialsizz.../incredible.mov"

In caso di azione eseguita correttamente, l'API risponderà con l'ID del video pubblicato.

Esempio di risposta

{
  "id":"287788272232962"  //ID of the published Video
}

Immagini di anteprima del video

Generiamo automaticamente immagini di anteprima utilizzando fermi immagine di video pubblicati. Le miniature generate possono essere migliorate per una luminosità, un colore e un contrasto di qualità superiore. Puoi fornire la tua immagine di anteprima includendo il campo thumb con il protocollo ripristinabile o non ripristinabile. Se utilizzi il protocollo ripristinabile, includi il campo thumb durante il passaggio 3: conclusione della sessione di caricamento. Le immagini di anteprima fornite non verranno alterate.

Requisiti per le immagini di anteprima

Formato: BMP, GIF, JPEG, PNG, TIFF
Dimensioni del file: al massimo 10 MB.

Non esistono requisiti per le dimensioni dell'immagine, ma deve avere le stesse proporzioni del video.

Esempio di richiesta di caricamento ripristinabile con miniatura

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "upload_phase=finish" \
  -F "access_token=EAADI..." \
  -F "upload_session_id=2918040901584241"
  -F "thumb=@/Users/...thumbnail_image.png"

Esempio di risposta JSON

{
  "success":true
}

Esempio di richiesta di caricamento non ripristinabile con miniatura

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "access_token=EAADd..." \
  -F "source=@/Users/...incredible.mov"
  -F "thumb=@/Users/...thumbnail_image.png"

Esempio di risposta

{
  "id":"287788272232962"
}