2011-04-28 13 views
14

Estoy almacenando tokens de acceso y de usuario de Facebook. ¿Puedo publicar en el muro de un usuario seleccionado esta información? El siguiente código se encuentra aquí: http://developers.facebook.com/docs/reference/api/post/ No estoy seguro de cómo ejecutarlo con php.Publicar en el muro de un usuario de Facebook con cURL PHP

curl -F 'access_token=$accessToken' \ 
    -F 'message=Check out this funny article' \ 
    -F 'link=http://www.example.com/article.html' \ 
    https://graph.facebook.com/$facebookid/feed 
+0

¿Qué hay de usar PHP [cURL API] (http://ca2.php.net/manual/en/book.curl.php)? – zneak

+0

Dudo que esto funcione, pero lo intentaré :) – Kumar

Respuesta

30
$attachment = array(
'access_token' => $token, 
'message' => $msg, 
'name' => $title, 
'link' => $uri, 
'description' => $desc, 
'picture'=>$pic, 
'actions' => json_encode(array('name' => $action_name,'link' => $action_link)) 
); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,'https://graph.facebook.com/fbnameorid/feed'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //to suppress the curl output 
$result = curl_exec($ch); 
curl_close ($ch); 
+1

¿debería haber una declaración 'if' en algún lugar de este código? – pepe

+0

cuando ejecuto este código desde el navegador funciona. Pero cuando ejecuto esto en la consola obtengo {"error": {"mensaje": "(# 200) El usuario no ha autorizado la aplicación para realizar esta acción", "tipo": "OAuthException", "código": 200}} – themis

+0

Gracias y para agregar lo que descubrí: para cargar una imagen desde su servidor, cambie la url de solicitud a: https://graph.facebook.com/fbnameorid/photos y agregue un elemento de matriz llamado 'archivo' con valor '@'. [ruta al archivo] – ssaltman

2

Use Facebook SDK. Es mucho mejor que manejar CURL por ti mismo.

+10

Quizás pueda observar qué funciones específicas en el SDK de Facebook podrían reemplazar este código en lugar de apuntar a todo el SDK. – joe

3

Probé con el método cURL pero no sé a qué debería cambiar $ action_name y $ action_link.

<?php 
require_once("facebooksdk/facebook.php"); 
require_once('config.php'); 

$facebook = new Facebook(array(
'appId' => $appId, 
'secret' => $appSecret, 
'cookie' => true 
)); 

$access_token = $facebook->getAccessToken(); 
echo $access_token; 
$msg = "testmsg"; 
$title = "testt"; 
$uri = "http://somesite.com"; 
$desc = "testd"; 
$pic = "http://static.adzerk.net/Advertisers/d18eea9d28f3490b8dcbfa9e38f8336e.jpg"; 
$attachment = array(
'access_token' => $access_token, 
'message' => $msg, 
'name' => $title, 
'link' => $uri, 
'description' => $desc, 
'picture'=>$pic, 
'actions' => json_encode(array('name' => $action_name,'link' => $action_link)) 
); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,'https://graph.facebook.com/me/feed'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //to suppress the curl output 
$result = curl_exec($ch); 
curl_close ($ch); 


?> 

obtengo el token de acceso con éxito, por lo que solo estos 2 parámetros son los que necesito.

+0

Solo agregue algo como: ' \t $ action_name = 'Register Now'; \t $ action_link = 'https: //example.com/register/'; ' –

Cuestiones relacionadas