2011-07-14 4 views
0

J'essaie d'obtenir liste d'amis et je reçois cette erreur:Facebook access_token vide

Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user. thrown in /server/url/base_facebook.php on line 970 

Voici le code que je utilise:

$facebook = new Facebook(array(
    'appId' => $appID, 
    'secret' => $appSecret, 
    'cookie' => true, // enable optional cookie support 
)); 
$result = $facebook->api('/me/friends/',array('access_token' => $facebook->access_token)); 

Voici les données que je reviens dans la variable facebook $:

Facebook Object 
(
    [appId:protected] => 220........ 
    [apiSecret:protected] => 2162e6c1b771...... 
    [user:protected] => 
    [signedRequest:protected] => 
    [state:protected] => 894ad3b36c2ebdcbcf6d4f110641dd4f 
    [accessToken:protected] => 
    [fileUploadSupport:protected] => 
) 

Pour une raison quelconque le access_token est vide. Il a bien fonctionné et soudainement arrêté ... L'application a déjà les autorisations et j'utilise le dernier PHP SDK v3.0.1

S'il vous plaît aidez-moi ... Je deviens fou avec ce problème ...

Merci, Barre.

Répondre

-1

Vous devez mettre à jour votre SDK v3.0:

https://github.com/facebook/php-sdk

Edit: Depuis que vous utilisez votre v.3.0 construction est faux .. il n'y a plus de paramètre cookie $ pour le constructeur. Je suggère de réviser la documentation.

0

Il semble que vous ayez besoin d'analyser la demande signée d'abord est-ce une application iframe ou un site Web?

si c'est une application iFrame et l'utilisateur déjà autorisé

essayer.

public function parse_signed_request($signed_request) 
{ 

    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

    $sig = $this->base64_url_decode($encoded_sig); 
    $data = json_decode($this->base64_url_decode($payload), true); 

    if(strtoupper($data['algorithm']) !== 'HMAC-SHA256') { 
     throw new Exception('bad algorithm'); 
    } 

    $expected_sig = hash_hmac('sha256', $payload, $this->app_secret, $raw = true); 

    if($sig !== $expected_sig) { 
     throw new Exception('Bad signed JSON'); 
    } 

    return $data; 

} 

cela va analyser la demande signée.

après u obtenir les données var_dump et en elle u verront le oauth_token ....

private function base64_url_decode($input) { 
    return base64_decode(strtr($input, '-_', '+/')); 
} 
+0

Cela ne serait nécessaire que s'il utilise JS SDK pour générer des jetons. –

+0

en fait, je viens de terminer une application de toile facebook sans utiliser JS SDK du tout. et ce code était dedans. – ParparDromi

0

Vous devez ajouter $this->load->library('facebook'); dans le constructeur.

Questions connexes