2010-05-06 16 views
12

He creado una aplicación, y ahora quiero publicar un mensaje en la pared de uno de mis amigos con el uso de la nueva Graph API. ¿Es esto factible?Cómo usar FB Graph para publicar un mensaje en un feed (muro)

Ya estoy usando oAuth y Graph-api para obtener una lista de todos mis amigos. La API en http://developers.facebook.com/docs/api me dice que Curl https://graph.facebook.com/[userid]/feed para leer la alimentación, pero también me dice que howto publicar un mensaje:

curl -F 'access_token=[...]' -F 'message=Hello, Arjun. I like this new API.' https://graph.facebook.com/arjun/feed 

Por supuesto esto no funciona! Y no puedo averiguar por qué ..

Éstos son mi código PHP:

require_once 'facebook.php'; // PHP-SDK downloaded from http://github.com/facebook/php-sdk 
$facebook = new Facebook(array(appId=>123, secret=>'secret')); 
$result = $facebook->api(
     '/me/feed/', 
     array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..') 
); 

Este código no lanza ningún error, y sé que mi señal_acceso son correctas (de lo contrario me quedo could't $ facebook-> api ('/ me señal_acceso =?' $ this-> señal_acceso.);.? para obtener mi UserObject

Haga que alguien por ahí sucsessfully publicó un mensaje usando Graph-api i Entonces necesitar su ayuda ! :-)

Respuesta

18

bien, finalmente resolvieron este. Gracias a phpfour por su ayuda :-)

Primero: Mi conexión-url es el siguiente (con "publish_stream"):

$connectUrl = $this->getUrl(
    'www', 
    'login.php', 
    array_merge(array(
    'api_key'   => $this->getAppId(), 
    'cancel_url'  => $this->getCurrentUrl(), 
    'req_perms'  => 'publish_stream', 
    'display'   => 'page', 
    'fbconnect'  => 1, 
    'next'   => $this->getCurrentUrl(), 
    'return_session' => 1, 
    'session_version' => 3, 
    'v'    => '1.0', 
), $params) 
); 

Segunda; Traté de publicar en Facebook a través de

$result = $facebook->api(
    '/me/feed/', 
    array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..') 
); 

Pero la forma correcta de hacerlo es incluir un parámetro más ('post'):

$result = $facebook->api(
    '/me/feed/', 
    'post', 
    array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..') 
); 
6

Necesitará la extensión "publish_stream" permiso para escribir en el feed. Aquí hay una lista completa de ellos: http://developers.facebook.com/docs/authentication/permissions.

Con el fin de obtener la autorización extendida, obtener el token de autorización de esta manera:

https://graph.facebook.com/oauth/authorize? 
client_id=...& 
redirect_uri=http://www.example.com/callback& 
scope=publish_stream 
+0

Hoy estoy usando Facebook :: getLoginUrl() para autorizar. He añadido "publish_stream" en "req_perms", pero supongo que esto no es suficiente :( – qualbeen

+0

Bueno, si estás atascado, puedes echar un vistazo a mi publicación de blog reciente donde he mostrado un ejemplo de trabajo: http: //bit.ly/cT40vV –

+1

Vale la pena señalar que debe ser "publish_stream", no "stream_publish". Consulte http://developers.facebook.com/docs/authentication/ –

0

Esa es la vieja manera de obtener acceso. En el gráfico primero me genera código llave con:

$getLinkCode ='https://graph.facebook.com/oauth/authorize'. 
       '?client_id=YOUR_APPID'. 
       '&redirect_uri=YOUR_SITE'. 
       '&scope=publish_stream'; 

Y ahora cuando tenemos código de la llave podemos generar señal_acceso de enlace:

$getLinkToken='https://graph.facebook.com/oauth/access_token'. 
       '?client_id=YOUR_APPID'. 
       '&redirect_uri=YOUR_SITE'. 
       '&client_secret=YOUR_SECRET'. 
       '&code=CODE_KEY'; 

Pero esto señal_acceso publicar su mensaje como USUARIO no APLICACIÓN ... ¿POR QUÉ?

Si desea escribir en el muro aplicación de uso:

$facebook->api('/YOUR_APPID/feed/', 'post', array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..')); 
1

Además de CHF,

Después de la publicación:

$getLinkToken='https://graph.facebook.com/oauth/access_token'. 
       '?client_id=YOUR_APPID'. 
       '&redirect_uri=YOUR_SITE'. 
       '&client_secret=YOUR_SECRET'. 
       '&code=CODE_KEY'; 

me dio la respuesta:

https://graph.facebook.com/oauth/access_token? 
    client_id=xxxxxxxxxxxxxx 
    &redirect_uri=myurl 
    &client_secret=xxxxxxxxxxxxxx 
    &code=xxxxxxxxxxxxxx 

sin los cuales uno es access_token, client_secret o código

$facebook->api('/YOUR_APPID/feed/', 'post', 
array('access_token' => $this->access_token, 
'message' => 'Playing around with FB Graph..')); 
1

Como el enlace dice: enter link description here

<?php 
    $app_id = "YOUR_APP_ID"; 
    $app_secret = "YOUR_APP_SECRET"; 
    $my_url = "YOUR_POST_LOGIN_URL"; 
    $code = $_REQUEST["code"]; 
    if(empty($code)) { 
    $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" 
    . $app_id . "&amp;redirect_uri=" . urlencode($my_url) . "&amp;scope=email"; 
    echo("<script>top.location.href='" . $dialog_url . "'</script>"); 
    } 
    $token_url = "https://graph.facebook.com/oauth/access_token?client_id=" 
    . $app_id . "&amp;redirect_uri=" . urlencode($my_url) 
    . "&amp;client_secret=" . $app_secret 
    . "&amp;code=" . $code; 
    $access_token = file_get_contents($token_url); 
    $graph_url="https://graph.facebook.com/me/permissions?".$access_token; 
    echo "graph_url=" . $graph_url . "<br />"; 
    $user_permissions = json_decode(file_get_contents($graph_url)); 
    print_r($user_permissions); 
?> 
0

En lugar de utilizar el código de abajo

[facebook dialog:@"feed" 
andParams:params 
andDelegate:self]; 

Utilice la siguiente solución

[facebook requestWithGraphPath:@"me/feed" andParams:params andHttpMethod:@"POST" andDelegate:self]; 
Cuestiones relacionadas