2012-10-11 20 views
0

我試圖獲得一個隨機朋友。我找到了this線程,它看起來應該工作。 這裏是我的代碼:Facebook API:使用PHP獲取隨機朋友

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

      $params = array(
       'method' => 'fql.query', 
       'query' => "SELECT uid, name, sex FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me()) order by rand() limit 1", 
      ); 

      $result = $facebook->api($params); 
      echo print_r($result); 

但我得到的錯誤:

Fatal error: Uncaught Exception: 102: Requires user session thrown in /home/path/to/base_facebook.php on line 1050 

問題出在哪裏?我試圖搜索可能的問題,但我沒有太多成功......

+0

你有FB登錄按鈕嗎?我認爲問題是沒有認證用戶 – Jason

回答

2

是的,正如Jason所評論的,看起來您沒有經過身份驗證的用戶。

由於您使用的PHP SDK,最快捷的方式來解決這個問題如下:

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

// This will redirect the user to a login/authentication dialog. 
if (!$facebook->getUser()) { 
    echo "<script>window.location = '".$facebook->getLoginUrl()."'</script>"; 
    exit(); 
} 

$params = array().. etc, the rest of your code 

缺乏最佳實踐代碼,儘管 - 這應該做的伎倆。

+0

感謝您的消息喬。那麼,我有兩個頁面 - 「index.php」和「data.php」。用戶在頁面'index.php'上開始(用戶被認證)。從這個頁面他發送表單('action =「data.php」method =「get」)並且在這個頁面('data.php')我需要得到一個隨機用戶...有什麼辦法可以通過認證用戶從'index.php'頁面轉換爲'data.php'?謝謝 – user984621

+0

一旦他們登錄/認證了應用程序,你可以在data.php頁面上使用上面的代碼,它將工作相同 - 只會在$ facebook-> getUser()方法失敗時回顯腳本。 –