2012-10-30 3 views
-2

Voici le code des appels d'API et de connexion via Facebook. Le problème est que lorsqu'il redirige vers Facebook, il ne se connecte pas. Quelle partie de mon code est erronée et comment puis-je le réparer?Impossible de se connecter via Facebook

require 'facebook/facebook.php'; 
require 'config/fbconfig.php'; 
require 'config/functions.php'; 
$url = $_REQUEST['lasturl']; 

$facebook = new Facebook(array(
    'appId' => APP_ID, 
      'secret' => APP_SECRET, 
      'cookie' => true 
    )); 

$session = $facebook->getSession(); 

if (!empty($session)) { 
    # Active session, let's try getting the user id (getUser()) and user info (api->('/me')) 
try { 
    $uid = $facebook->getUser(); 
    $user = $facebook->api('/me'); 
} catch (Exception $e) { 


} 

    if (!empty($user)) { 
     # User info ok? Let's print it (Here we will be adding the login and registering routines) 
     // echo '<pre>'; 
     //print_r($user); 
     // echo '</pre><br/>'; 
     $username = $user['name']; 
     $user = new User(); 
     $userdata = $user->checkUser($uid, 'facebook', $username); 
     if(!empty($userdata)){ 
      session_start(); 
      $_SESSION['id'] = $userdata['id']; 
      $_SESSION['oauth_id'] = $uid; 

      $_SESSION['username'] = $userdata['username']; 
      $_SESSION['oauth_provider'] = $userdata['oauth_provider']; 
      header("Location: ".$url); 
     } 
    } else { 
     # For testing purposes, if there was an error, let's kill the script 
     die("There was an error."); 
    } 
} else { 
    # There's no active session, let's generate one 
    $login_url = $facebook->getLoginUrl(); 
    header("Location: " . $login_url); 
} 
+0

espoir ce lien peut résoudre votre problème. c'est une bonne et facile implemnt http://25labs.com/tutorial-post-to-multiple-facebook-wall-or-timeline-in-one-go-using-graph-api-batch-request/ –

Répondre

0

En fait, le code est correct et obtenir les informations d'identification de connexion devrait fonctionner correctement. Mais le problème est ici.

if (!empty($user)) 

Je pense que vous devriez mettre ceci en premier avant d'obtenir l'information d'utilisateur avec l'appel d'API. Si la fonction getUser renvoie un ID, il n'est pas nécessaire d'obtenir la session en cours pour obtenir les informations de l'utilisateur.

+0

veuillez dire moi exactement où devrais-je mettre ce "si (! vide ($ utilisateur))"? –

0

Essayez ci-dessous le code: $session = $facebook->getSession(); ne fonctionnent pas

$facebook = new Facebook(array(
     'appId' => APP_ID, 
       'secret' => APP_SECRET, 
       'cookie' => true 
     )); 

    $uid = $facebook->getUser(); 

    if ($uid) { 
     # Active session, let's try getting the user id (getUser()) and user info (api->('/me')) 
    try { 

     $user = $facebook->api('/me'); 
    } catch (Exception $e) { 


    } 

     if ($uid) { 
      # User info ok? Let's print it (Here we will be adding the login and registering routines) 
      // echo '<pre>'; 
      //print_r($user); 
      // echo '</pre><br/>'; 
      $username = $user['name']; 
      $user = new User(); 
      $userdata = $user->checkUser($uid, 'facebook', $username); 
      if(!empty($userdata)){ 
       session_start(); 
       $_SESSION['id'] = $userdata['id']; 
       $_SESSION['oauth_id'] = $uid; 

       $_SESSION['username'] = $userdata['username']; 
       $_SESSION['oauth_provider'] = $userdata['oauth_provider']; 
       header("Location: ".$url); 
      } 
     } else { 
      # For testing purposes, if there was an error, let's kill the script 
      die("There was an error."); 
     } 
    } else { 
     # There's no active session, let's generate one 
     $login_url = $facebook->getLoginUrl(); 
     header("Location: " . $login_url); 
    } 
Questions connexes