¿Cómo publico un evento en una página de fans de Facebook usando PHP SDK y Graph API?

El siguiente código funciona, pero crea el evento como el administrador de la página actualmente conectado. Lo necesito para publicar el evento en la propia página de fans. FYI: A mi aplicación se le ha otorgado el alcance de los permisos: manage_pages

<?php

// Initialize a Facebook instance from the PHP SDK
$config = array(
  'appId' => FACEBOOK_APP_ID,
  'secret' => FACEBOOK_APP_SECRET,
  'cookie' => false,
  'scope' => 'manage_pages,create_event'
);

$facebook = new Facebook($config);

$access_token = $facebook->getAccessToken();

$page_id = 'XXXXXXXXXXXX';

// Now, getting the PAGE Access token, using the user access token

$page_token_url = "https://graph.facebook.com/$page_id?fields=access_token&" . $access_token;
$response = file_get_contents($page_token_url);

// Parse the return value and get the Page access token
$resp_obj = json_decode($response,true);

$page_access_token = $resp_obj['access_token'];

// Declare the variables we'll use to demonstrate
// the new event-management APIs
$event_id = 0;
$event_name = "New Event API Test Event";
$event_start = time() + rand(1, 100) * rand(24, 64) * 3600;
$event_privacy = "SECRET"; // We'll make it secret so we don't annoy folks.

// We'll create an event in this example.
// We'll need create_event permission for this.
$params = array(
  'name' => $event_name,
  'start_time' => $event_start,
  'privacy_type' => $event_privacy,
  'access_token' => $page_access_token,
  'page_id' => $page_id //where $page_id is the ID of the page you are managing
);

// Create an event
$ret_obj = $facebook->api("/$page_id/events", 'POST', $params);
if(isset($ret_obj['id'])) {
  // Success
  $event_id = $ret_obj['id'];
  printMsg('Event ID: ' . $event_id);
} else {
  printMsg("Couldn't create event.");
}

// Convenience method to print simple pre-formatted text.
function printMsg($msg) {
   echo "<pre>$msg</pre>";
}

?>

preguntado el 21 de mayo de 12 a las 18:05

Lo descubrí: agregué el parámetro page_id a la lista de $params y le dio el valor $page_id ¡y despegó! Publicaré el código modificado en caso de que ayude a alguien más si puedo recordar dentro de las próximas horas debido a mi baja reputación. ¡Gracias independientemente! -

¿Es este el código modificado anterior? ¡Realmente me vendría bien un poco de ayuda ahora mismo! :) -

@JodyHeavener Lo acabo de actualizar para ti. -

Error fatal: excepción de OAuth no detectada: token de acceso de OAuth no válido. lanzado en /home/scott/public_html/facebook-php-sdk/src/base_facebook.php en la línea 1340 -

1 Respuestas

La respuesta está aquí: API PHP de Facebook, publicar un evento en una página

Copiado a continuación para mayor comodidad:

Creo que necesitas la página access_token y así es como la obtienes:

$page_id = "XXXXXXXXX";
$page_access_token = "";
$result = $facebook->api("/me/accounts");
foreach($result["data"] as $page) {
    if($page["id"] == $page_id) {
        $page_access_token = $page["access_token"];
        break;
    }
}

Asegúrese de otorgar el permiso de administración de páginas y agregue el token de acceso a la matriz $event_info.

contestado el 23 de mayo de 17 a las 13:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.