2010-12-03 3 views
1

J'ai essayé de mettre en place facebook sur une page via une fonction qui est dans le fichier de fonctions. Cependant, je veux retourner plusieurs tableaux, donc je peux obtenir toutes les informations.Facebook api - dans une fonction

Voilà comment je le fais:

functions.php:

require 'src/facebook.php'; 

function fb_setup($app_id, $app_secret){ 
$facebook = new Facebook(array(
    'appId' => $app_id, 
    'secret' => $app_secret, 
    'cookie' => true, 
)); 
$session = $facebook->getSession(); 
$me = null; 
// Session based API call. 
if ($session) { 
    try { 
    $uid = $facebook->getUser(); 
    $me = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    } 
} 
// login or logout url will be needed depending on current user state. 
if ($me) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} else { 
    $loginUrl = $facebook->getLoginUrl(); 
} 
// This call will always work since we are fetching public data. 
$fb = array(
      "logoutUrl" => $logoutUrl, 
      "loginUrl" => $loginUrl 
      ); 

return $fb; 
return $me; 
} 

test.php

require("../functions.php"); 
$fb = fb_setup('************','*****************************'); 
echo $fb['logoutUrl']; 
//but I also want to get the $me info 

Je veux obtenir le $ me renseignements.

Merci!

Répondre

3
return array('fb' =>$fb, 'me' => $me); 


echo $fb['fb']['logoutUrl']; 
echo $fb['me']['name'];** 

Il utilise un tableau multidimensionnel, bien que je vous recommande de refactoring dans un class.

par exemple.

class FacebookController 
{ 
    private $facebook; 
    public function __construct($app_id, $app_secret) 
    { 
     $this->facebook = new Facebook(array(
      'appId' => $app_id, 
      'secret' => $app_secret, 
      'cookie' => true, 
     )); 
    } 

    public function getMe() 
    { 
     if ($this->isLoggedIn) 
     { 
      // Session based API call. 
      if ($session) 
      { 
       try 
       { 
        return $this->facebook->api('/me'); 
       } 
       catch (FacebookApiException $e) 
       { 
        error_log($e); 
        return false; 
       } 
      } 
     } 
    } 

    public function getUrl() 
    { 
     if($this->isLoggedIn) 
     { 
      return $this->facebook->getLogoutUrl(); 
     } 
     else 
     { 
      return $this->facebook->getLoginUrl(); 
     } 
    } 

    private function isLoggedIn() 
    { 
     return $facebook->getSession(); 
    } 
} 



$FacebookController = new FacebookController(APPID, SECRET); 
$me = $FacebookController->getMe(); 
$url = $FacebookController->getUrl(); 
+0

Merci beaucoup! fonctionne bien. Mais comment ferais-je pour en faire une classe alors? :) – ryryan

+0

Voir mes modifications pour vous donner une idée. – Gazler

+0

Cela semble assez simple quand on y pense. Merci beaucoup! Vraiment aidé! – ryryan

2
$returnArray = array(); 
$returnArray['fb'] = $fb; 
$returnArray['me'] = $me; 
return $returnArray;