2010-12-03 18 views
1

私は、関数ファイルにある関数を介してページにfacebookを設定しようとしています。しかし、私は複数の配列を返すので、私はすべての情報を得ることができます。Facebook api-in a function

の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 

を私も$私の情報を取得したいです。

ありがとうございます!

答えて

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


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

私はclassにリファクタリングお勧めしますが、これは多次元配列を使用しています。

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

ありがとうございます!うまくいく。しかし、それをクラスにするにはどうすればいいですか? :) – ryryan

+0

アイデアを与えるために私の編集を参照してください。 – Gazler

+0

それはあなたがそれについて考えるとかなりシンプルに思えます。どうもありがとう!本当に助けて! – ryryan

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