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"}''
)
);
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-