2012-05-12 399 views
0

我有這個簡單的代碼:無限循環

// index.php 
require_once("/fb/facebook.php"); 
require_once("/config/config.php"); 

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

$user = $facebook->getUser(); 

if ($user === 0) {  

    $loginUrl = $facebook->getLoginUrl(array(
     'redirect_uri' => 'https://www.example.com/join.php'  
    )); 

    echo("<script> top.location.href='" . $loginUrl . "'</script>");  
    exit; 

} 
else {  
    var_dump($facebook->api("/me"));  
} 

和join.php代碼:

//join.php 
require_once("/fb/facebook.php"); 
require_once("/config/config.php"); 

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

if (isset($_REQUEST['error'])) {  
    echo("<script>top.location.href='". $config['errors']['auth'] . "'</script>"); 
    exit; 
} 

echo("<script>top.location.href='". $config['url'] . "'</script>"); 

的問題是,當我去:http://apps.facebook.com/myappsample(和我」沒有登錄臉書)應用程序顯示驗證對話框(正確),但在此步驟後,它從index.phpjoin.php執行無限循環。

正如你可以看到當我檢查join.php中是否有任何錯誤,我做了一個重定向到index.php(應用程序的主頁),但在index.php我仍然得到$user === 0,所以它重定向到另一個時間join.php ....等等等等(無限循環)。

我該如何解決這類問題?

非常感謝!

編輯: 我用join.php回調(REDIRECT_URI)登錄頁面。這個頁面的目的是保存數據庫內的用戶信息,所以join.php會做到這一點,然後重定向到index.php讓用戶使用應用程序。錯誤?

+0

你爲什麼要用戶去join.php? FB會採取未經授權的用戶登錄頁面,然後重定向回你的應用程序,所以它應該沒問題,不是嗎? – Dhiraj

+0

join.php的目的是什麼?什麼是$ config ['url]'和'$ config ['errors'] ['auth']?'看起來它應該在成功時重定向。 –

+0

@DhirajBodicherla請參閱編輯上的問題 – Dail

回答

0

您需要撥打$facebook->getUser()才能真正處理回撥數據以在join.php中查找訪問令牌。