2011-02-16 32 views
5

Estoy trabajando con solicitudes de amistad. Cuando el usuario envía una solicitud de amistad, obtengo un request_id como respuesta. Sin embargo, cuando se utiliza este REQUEST_ID (XXXX) de la siguiente manera:Facebook Graph API devuelve falso

https://graph.facebook.com/XXXX/?access_token=YYYYYYYYY 

vuelve:

false 

la señal_acceso parece ser el más adecuado (el que se utiliza aquí es, por ejemplo, solo), ¿me estoy perdiendo algo? ¿Qué significa false? ¿Cómo obtengo el objeto JSON como datos de retorno?

Respuesta

3

intentar hacerlo sin la última barra:

https://graph.facebook.com/XXXX?access_token=YYYYYYYYY 

También intente con un token de acceso de la aplicación.

+0

Intenté sin el '/' al final, pero todavía da 'falso'. ¿puedes decirme qué es un 'token de acceso a la aplicación'? El access_token que estoy usando es el que obtiene la aplicación cuando el usuario se autentica. – lugbug

+0

sí, funciona. Request_id requiere el token de acceso a la aplicación en comparación con el token de acceso del usuario. El token de acceso a la aplicación también está documentado como 'secreto de la aplicación firmada' en el cuadro de diálogo Solicitud. – lugbug

+0

@lugbug: ¡Me alegro de que haya sido útil! y disculpe la demora, pero mi entorno de prueba no se configuró ayer para crear un ejemplo para usted. – ifaour

5

Parece que tiene alguna restricción en la configuración de su página. Supongo que cualquier restricción por país o por edad.

Elimine la condición en la página FB e inténtelo de nuevo.

ACTUALIZACIÓN:

es sólo mi adivinar pero supongo que la razón porque return false en caso de restricciones se debe a que no pudo verificar FB es la solicitud cumple con las restricciones de página. Resuelvo el problema mediante OAuth 2.0

Facebook docs for OAuth 2.0

Y aquí algo de código para hacer la vida más fácil:

ARCHIVO 1:

require_once('oauth2callback/index.php'); 

// Get likes from FB using auth 
$likes = do_auth_FB('[Object name]'); 
echo 'Likes en Facebook: ' . $likes . '<br/>'; 

ARCHIVO 2: (oauth2callback/index.php)

function do_auth_FB($objectName) { 

    // Setting required variables 
    $fbAppID = '[App ID]'; 
    $fbSecret = '[App secret]'; 
    $redirectURI = '[URL to redirect]'; 
    $objectName = '[Object name]'; 

    // Getting code var 
    $code = $_GET["code"]; 

    // Calling for code 
    if(empty($code)) { 
     $urlcode = 'http://www.facebook.com/dialog/oauth?' 
     . 'client_id=' . $fbAppID . '&redirect_uri=' . urlencode($redirectURI) 
     . '&client_secret=' . $fbSecret; 

     echo "<script> top.location.href='" . $urlcode . "'</script>"; 
    } 

    // Calling for token 
    $urlToken = 'https://graph.facebook.com/oauth/access_token?' 
     . 'client_id=' . $fbAppID . '&redirect_uri=' . urlencode($redirectURI) 
     . '&client_secret=' . $fbSecret . '&code=' . $code; 

    $response = file_get_contents($urlToken); 
    $outputResponse = null; 
    parse_str($response, $outputResponse); 

    // Calling for the required object 
    $graph_url = 'https://graph.facebook.com/' . $objectName . '?access_token=' 
     . $outputResponse["access_token"]; 

    $objectStream = json_decode(file_get_contents($graph_url)); 

    return $objectStream->likes; 
} 

En el ejemplo solo devuelve la página "Me gusta"

+1

Eso fue totalmente mi problema. Con o sin mi aplicación access_token, la API devuelve falso siempre que haya restricciones. ¿Dónde está eso documentado? –

+1

@MrRogers: en mi caso fue prueba y error. A veces, la documentación de FB no es tan buena como debería ser;). Actualizo mi respuesta tratando de ayudar a resolverla. – Crazystress

Cuestiones relacionadas