¿Hay alguna manera con la API Graph de Facebook para obtener una lista de todos los eventos creados por un único perfil? Nuestro cliente crea varios eventos y queremos obtener una lista de todos ellos. Dije que solo tendrían que asegurarse de que se prepararan para asistir al evento, porque entonces puedo sacar fácilmente la lista de eventos a los que asiste el perfil, pero tengo curiosidad de saber si hay otra manera. Tal vez una consulta FQL? Sin embargo, buscan requerir una consulta en la clave principal. ¿Y cómo sería esa consulta FQL si esa es la manera de hacerlo?Graph API - Obtener eventos por propietario/creador
Respuesta
que utilizan básicamente la FQL
que proporciona @jhchen. Sin embargo, me llevó aproximadamente 6 horas descubrir cómo usar ese FQL
. Así que pensé que podría proporcionarle un script en funcionamiento. No es perfecto, por favor actualícelo si encuentra un error.
- Descargar Facebooks PHP SDK
- Añadir
YOUR_APP_ID
- Añadir
YOUR_APP_SECRET
- Añadir
PAGE_ID
- realizar cambios en el comunicado
FQL
como mejor le parezca. FQL Documentation
Aparte de eso, deberías estar listo para partir. Además, establecí la zona horaria predeterminada en America/Los_Angeles
. Esto probablemente cause problemas para algunos de ustedes, si alguien tiene una mejor manera de manejar los husos horarios, por favor avíseme.
Código PHP:
<?php
require_once("php/facebook.php");
date_default_timezone_set('America/Los_Angeles');
function display_events()
{
$app_id = 'YOUR_APP_ID';
$secret = 'YOUR_APP_SECRET';
$page_id = 'PAGE_ID';
$config = array();
$config['appId'] = $app_id;
$config['secret'] = $secret;
$config['fileUpload'] = false; // optional
$facebook = new Facebook($config);
$fql = 'SELECT
eid,
name,
pic_square,
creator,
start_time,
end_time
FROM event
WHERE eid IN
(SELECT eid
FROM event_member
WHERE uid='.$page_id.'
)
AND end_time >= ' . mktime() . '
ORDER BY start_time ASC
';
$ret_obj = $facebook->api(array(
'method' => 'fql.query',
'query' => $fql,
));
$html = '';
foreach($ret_obj as $key)
{
$facebook_url = 'https://www.facebook.com/event.php?eid=' . $key['eid'];
$start_time = date('M j, Y \a\t g:i A', $key['start_time']);
$end_time = date('M j, Y \a\t g:i A', $key['end_time']);
$html .= '
<div class="event">
<a href="'.$facebook_url.'">
<img src="'.$key['pic_square'].'" />
</a>
<span>
<a href="'.$facebook_url.'">
<h2>'.$key['name'].'</h2>
</a>
<p class="time">'.$start_time.'</p>
<p class="time">'.$end_time.'</p>
</span>
</div>
';
}
echo $html;
}
Este es uno de esos "no hay una buena forma de llegar hasta allí". No puede usar FQL porque la columna del creador no está indexada. La mejor solución que se me ocurre en este momento sería utilizar Graph API para consultar la conexión de eventos del creador y filtrar los eventos para los que no son el creador. Esto no será terriblemente eficiente, ya que descargará información sobre todos los eventos del usuario, incluso los que no crearon. Por lo tanto, me gustaría experimentar con lo descomponen en dos consultas:
graph.facebook.com/[user_id]/events?fields=id,owner&limit=1000
y luego una vez que haya que cumplan con todos los eventos que no he creado:
graph.facebook.com/?ids=[event_ids for the user's events]
Puede utilizar FQL, con un eid donde en (seleccione eid de event_member donde uid = <...>) cláusula, como se describe por jcmoney. –
Usted puede utilizar FQL. Solo usar el creador como su cláusula Where no funciona porque el creador no es indexable. Sin embargo, una solución alternativa es incluir una cláusula where indexable y agregar el creador además. Ej:
SELECT Eid, nombre, imagen, creador de un evento DONDE Eid IN (SELECT Eid DE DONDE event_member uid = 12345) y creador = 12345
La respuesta de zechdc es perfecto, pero yo sólo tenía que añadir strtotime para la hora_inicial a trabajar.
$start_time = date('M j, Y \a\t g:i A', strtotime($key['start_time']));
$end_time = date('M j, Y \a\t g:i A', strtotime($key['end_time']));
- 1. Facebook Graph API: Obtener fecha de joinin
- 2. Buscar eventos de Facebook y la paginación (Graph API)
- 3. Facebook Graph API - obtener información amigos
- 4. Graph Batch API
- 5. Facebook Graph API: Get user_location
- 6. Facebook 'Friends.getAppUsers' usando Graph API
- 7. ¿Cómo puedo obtener detalles de amistad en Facebook Graph API?
- 8. Facebook Graph Api - ¿Puedo obtener los campos "predeterminados" más algunos?
- 9. Facebook Graph API: ¿obtener ID para una URL?
- 10. Obtener JSON Facebook Graph API User Info con jQuery
- 11. Facebook Graph API: cómo obtener el país de usuario?
- 12. Facebook Graph API devuelve falso
- 13. Facebook Graph API Group Files
- 14. Facebook: Graph API java library
- 15. Facebook Graph API + Facebook Pages
- 16. ¿Cómo pedir resultados para Facebook Graph API?
- 17. Facebook Graph Api json missing posts
- 18. Llamadas por lotes con Facebook Graph API & PHP
- 19. Filtrar por autor de publicación usando Facebook Graph API
- 20. Graph API get photo square (100x100)
- 21. API FQL y Graph en iOS
- 22. Facebook Graph API no devuelve la imagen del evento
- 23. límite API de Facebook Graph duda
- 24. Facebook Graph API dando una OAuthException desconocida
- 25. Graph api - Me gusta/until - since
- 26. buscando amigos usando Facebook graph api
- 27. Publicar en Facebook Graph Api es lento
- 28. Cómo establecer el lugar para el evento mediante Graph API
- 29. Graph API vs FQL que es más rápido?
- 30. ¿OmniAuth proporciona ganchos simples a la API Graph de Facebook?
Ya no necesito hacer esto y no tengo tiempo para probar esto, pero supongo que funciona si has pasado 6 horas. ¡Gracias! – jwynveen
Funciona (el fql - probado en ruby), ¡gracias! –
¿No puedes usar el campo de la zona horaria del evento en sí? – Trefex