2011-02-16 5 views
5

Je travaille avec des demandes d'amis. Lorsque l'utilisateur envoie une demande d'ami, j'obtiens une réponse request_id. Cependant, quand j'utilise cette REQUEST_ID (XXXX) comme suit:Facebook Graph API retourne false

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

il retourne:

false 

le access_token semble être la bonne (celui utilisé ici est par exemple seulement), ai-je oublié quelque chose? qu'est-ce que false signifie? comment puis-je obtenir l'objet JSON en tant que données de retour?

Répondre

3

Essayez sans la dernière barre:

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

Essayez aussi avec un jeton d'accès aux applications.

+0

J'ai essayé sans le '/' à la fin, mais cela donne encore 'faux'. pouvez-vous s'il vous plaît laissez-moi savoir ce qu'est un 'jeton d'accès à l'application'? Le access_token que j'utilise est celui que l'application obtient quand l'utilisateur est authentifié. – lugbug

+0

oui, ça marche. Les request_ids requièrent le jeton d'accès à l'application par rapport au jeton d'accès utilisateur. Le jeton d'accès aux applications est également documenté en tant que «secret d'application signé» dans la boîte de dialogue Demande. – lugbug

+0

@lugbug: Heureux que ça a aidé! et désolé pour le retard, mais mon environnement de test n'a pas été configuré hier pour créer un exemple pour vous. – ifaour

5

On dirait que vous avez une restriction dans votre configuration de page. Je suppose que toute restriction par pays ou par âge.

Supprimez la condition dans la page FB et réessayez.

MISE À JOUR:

Est-ce que mon deviner, mais je suppose que la raison parce qu'il retourne faux en cas de restrictions est parce que FB ne pouvait pas vérifier la demande est conforme aux restrictions de page. Je résous le problème en utilisant OAuth 2.0

Facebook docs for OAuth 2.0

Et ici un code pour rendre la vie plus facile:

FICHIER 1:

require_once('oauth2callback/index.php'); 

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

DOSSIER 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; 
} 

Dans l'exemple, retourne la page J'aime

+1

C'était totalement mon problème. Avec ou sans mon application access_token, l'API renvoie false tant qu'il y a des restrictions. Où est-ce documenté? –

+1

@MrRogers: Dans mon cas était test et erreur. Parfois, les documentations FB ne sont pas aussi bonnes qu'elles devraient l'être;). Je mets à jour ma réponse en essayant d'aider à la résoudre. – Crazystress