2011-03-05 23 views
10

Quiero publicar en mi propia aplicación un texto con una secuencia de comandos pero sin iniciar sesión primero porque debe hacerse automáticamente. ¿Cómo podría hacer eso? Ya lo intenté:Facebook API: Cómo publicar en la pared de aplicación propia sin iniciar sesión

$fb = new Facebook(array(
    'appId' => 'appid', 
    'secret' => 'appsecret', 
    'cookie' => true 
)); 


if ($fb->getSession()) { 
    // Post 
} else { 
    // Logger 
    // Every time I get in here :(
} 

¿Qué tengo que hacer para que el acceso se pueda publicar en el muro de mi propia aplicación con un script?

+0

Sin iniciar sesión en fb No creo que pueda acceder a ninguna funcionalidad de este. –

+0

¿Está bien y cómo puedo publicarlo en el muro de la aplicación? – Poru

Respuesta

13

Si desea publicar en su propio muro de aplicaciones, todo lo que necesita es un token de acceso a la aplicación, y si desea publicar en un muro de usuario sin iniciar sesión, también necesita este token de acceso directo para el usuario, para eso tiene que pedir permiso de acceso sin conexión.

Para publicar en la pared de su aplicación:

1- Curl este enlace para obtener su acceso a las aplicaciones token:

https://graph.facebook.com/oauth/access_token? client_id = YOUR_APP_ID & client_secret = YOUR_APP_SECRET & grant_type = client_credentials

2- Publicar en la pared sin comprobar si la sesión

Ejemplo:

<?php 
require_once 'facebook.php' 

//Function to Get Access Token 
function get_app_token($appid, $appsecret) 
{ 
$args = array(
'grant_type' => 'client_credentials', 
'client_id' => $appid, 
'client_secret' => $appsecret 
); 

$ch = curl_init(); 
$url = 'https://graph.facebook.com/oauth/access_token'; 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $args); 
$data = curl_exec($ch); 

return json_encode($data); 
} 

// Create FB Object Instance 
$facebook = new Facebook(array(
    'appId' => $appid, 
    'secret' => $appsecret, 
    'cookie' => false, 
    )); 


//Get App Token 
$token = get_app_token($appid, $appsecret); 

//Try to Publish on wall or catch the Facebook exception 
try { 
$attachment = array('message' => '', 
      'access_token' => $token, 
        'name' => 'Attachment Name', 
        'caption' => 'Attachment Caption', 
        'link' => 'http://apps.facebook.com/xxxxxx/', 
        'description' => 'Description .....', 
        'picture' => 'http://www.google.com/logo.jpg', 
        'actions' => array(array('name' => 'Action Text', 
             'link' => 'http://apps.facebook.com/xxxxxx/')) 
        ); 

$result = $facebook->api('/'.$appid.'/feed/', 'post', $attachment); 
} 

//If the post is not published, print error details 
catch (FacebookApiException $e) { 
echo '<pre>'; 
print_r($e); 
echo '</pre>'; 
} 

Comprobar APP parte LOGIN en esta página para más información : http://developers.facebook.com/docs/authentication/

+0

Intenté implementar esto pero dice "Solicitud de publicación no admitida", ¿tiene alguna idea de por qué? –

+0

Esto ya no funciona. La api actual no tiene el método 'api', sino' post' en su lugar. – ProfK

3

No puedo dejar esto como una comente ya que no tengo los puntos, pero si alguien tiene un problema similar, si la respuesta de McSharks no funciona, elimine json_encode como sus comillas de codificación y debería funcionar.

Cuestiones relacionadas