tools ejemplos developers and php facebook facebook-graph-api facebook-php-sdk

ejemplos - facebook/php-sdk-v4



¿Cómo puedo publicar varias fotos a través de la API de Facebook? (4)

No hay forma de publicar más de una foto en la misma llamada API de gráfico.

Ver documentación: https://developers.facebook.com/docs/graph-api/reference/user/photos

Ahora publico una foto individual en una pared como esta:

$response = $facebook->api("/$group_id/photos", "POST", array( ''access_token='' => $access_token, ''message'' => ''This is a test message'', ''url'' => ''http://d24w6bsrhbeh9d.cloudfront.net/photo/agydwb6_460s.jpg'', ) );

Funciona bien, pero de alguna manera puedo publicar varias fotos, algo como esto:

¡Gracias por adelantado!


Ahora puede publicar varias imágenes en una sola publicación en su feed o página:

Para cada foto de la historia, cárguela sin publicar utilizando el punto final {user-id}/photos con el argumento published=false .

Obtendrá una identificación por cada foto que suba de esta manera:

{ "id": "10153677042736789" }

Publique una historia de varias fotos utilizando el endpoint {user-id}/feed y use los ID devueltos cargando una foto

$response = $facebook->api("/me/feed", ''POST'', array( ''access_token='' => $access_token, ''message'' => ''Testing multi-photo post!'', ''attached_media[0]'' => ''{"media_fbid":"1002088839996"}'', ''attached_media[1]'' => ''{"media_fbid":"1002088840149"}'' ) );

Fuente: Publicación de una historia de varias fotos


De hecho, puedes subir una foto de varios pisos (lo hice usando Graph Api y PHP), pero el problema viene si necesitas programar esta publicación. Tu publicación está programada pero también se muestra en el feed de la página.

PD: estoy usando Graph Api v2.9

Código PHP

$endpoint = "/".$page_id."/photos"; foreach ($multiple_photos as $file_url): array_push($photos, $fb->request(''POST'',$endpoint,[''url'' =>$file_url,''published'' => FALSE,])); endforeach; $uploaded_photos = $fb->sendBatchRequest($photos, $page_access_token); foreach ($uploaded_photos as $photo): array_push($data_post[''attached_media''], ''{"media_fbid":"''.$photo->getDecodedBody()[''id''].''"}''); endforeach; $data_post[''message''] = $linkData[''caption'']; $data_post[''published''] = FALSE; $data_post[''scheduled_publish_time''] = $scheduled_publish_time; $response = $fb->sendRequest(''POST'', "/".$page_id."/feed", $data_post, $page_access_token); $post_id = $cresponse->getGraphNode()[''id''];


Puede realizar solicitudes por lotes como se menciona aquí: https://.com/a/11025457/1343690

Pero es simple recorrer las imágenes y publicarlas directamente.

foreach($photos as $photo) { //publish photo }


Editar:

(con respecto a la agrupación de fotos en la pared)

Esta agrupación se realiza automáticamente por Facebook si se cargan algunas fotos en el mismo álbum .

Actualmente no puedes crear un álbum en un grupo a través de la API Graph, no es compatible (a partir de ahora), mira este error .

Pero puedes hacer esto: crear un álbum manualmente, luego obtener el album_id por-
/GET /{group-id}/albums , luego use el código con album_id lugar de group_id -

foreach($photos as $photo){ $facebook->api("/{album-id}/photos", "POST", array( ''access_token='' => $access_token, ''name'' => ''This is a test message'', ''url'' => $photo ) ); }

Lo he probado, veo el resultado-