2012-05-13 57 views
5

請,我需要幫助。我正在處理這個問題1個月!Facebook連接給出了一個重定向循環

我想實現facebook連接登錄到我的網站,使用PHP和php-sdk 3.1.1。簡而言之,我的代碼脫機工作(在本地主機上),但不在線,導致「循環太多(在Chrome上)」:錯誤310(net :: ERR_TOO_MANY_REDIRECTS):有太多的重定向。

這裏是我的代碼:

1/I加載的Facebook連接SDK和初始化它:

require 'src/facebook.php'; 
    $facebook = new Facebook(array(
     'appId' => '209633612480053', 
     'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx' 
    )); 

請注意,我創建Facebook的developper頁面上有兩個應用,一個是離線測試,另一個用於在線測試。在測試時,我肯定會在兩對appId/secret(在線和離線)之間正確切換。所以這不是facebbok-connect init的問題。

2 /我會試圖獲取用戶信息:

$uid = $facebook->getUser(); 

    if($uid) 
    { 
    /* 
     * Get user information. 
     */ 
    $user = $facebook->api('me/'); 
    print_r($user); // Display user info. 
    } 
    else 
    { 
    /* 
     * Redirect to FB login URL to allow access. 
     */ 
    $loginURL = $facebook->getLoginURL(); 
    echo '<script> top.location.href=\''.$loginURL.'\'</script>'; 
    } 

就這麼簡單:如果用戶IC連接到Facebook上,所以顯示它的信息,否則,重定向至Facebook登錄頁面,允許訪問。

它完全脫機,但在網上,我收到了鍍鉻的錯誤:

This webpage has a redirect loop 
The webpage at https://www.facebook.com/dialog/oauth?client_id=209633612480053&redirect_uri=http%3A%2F%2Fwww.bluward.com%2Foauth%2Ffacebook&state=551f60cd4be6cd8ed1622f8168a5219a#_=_ has resulted in too many redirects. Clearing your cookies for this site or allowing third-party cookies may fix the problem. If not, it is possibly a server configuration issue and not a problem with your computer. 

一些額外的信息:在網上,我用的1and1主機商,並確保有比脫機服務器相同的服務器配置(這是一個MAMP Pro),我上傳了sams php.ini文件。

如果有人有想法,或者得到類似的問題,我很樂意提供幫助。

非常感謝您的幫助。

UPDATE:

我更新了我的代碼,把重點放在問題的行,所以不是重定向至Facebook登錄頁面,我顯示重定向URL,所以我只需要點擊登錄:

$uid = $facebook->getUser(); 

    if($uid) 
    { 
    /* 
     * Get user information. 
     */ 
    $user = $facebook->api('me/'); 
    print_r($user); // Display user info. 
    } 
    else 
    { 
    /* 
     * Redirect to FB login URL to allow access. 
     */ 
    $loginURL = $facebook->getLoginURL(); 
    echo $loginURL; // <-- HERE I CHANGED THE CODE TO DISPLAY LOGIN URL 
    } 

我注意到的是,Facebook無限重定向到我的腳本頁面。網址欄上只有code參數發生變化。

那麼,爲什麼facebbok重定向到我的腳本頁面而沒有給我用戶信息?

請問,有什麼想法嗎?

+0

您是否在瀏覽器中啓用了Cookie? – AlphaMale

+0

當然可以。我使用允許設置本地數據的設置(推薦)。 – htaidirt

+0

然後很奇怪。在$ loginURL = $ facebook-> getLoginURL()後放置一個出口;然後更新它是否仍然重定向。 – AlphaMale

回答

5

我有這個問題PHP,在我的情況下,我不得不從SDK編輯base_facebook.php:

public static $CURL_OPTS = array(
    CURLOPT_CONNECTTIMEOUT => 10, 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_TIMEOUT  => 60, 
    CURLOPT_USERAGENT  => 'facebook-php-3.2', 
    CURLOPT_SSL_VERIFYPEER => false, 
    CURLOPT_SSL_VERIFYHOST => false, 
); 

我手動添加的最後兩個選項。

+0

天才與aredirect循環有同樣的問題,它爲我解決了它。 –

+0

我有同樣的問題..但這種解決方案不工作.. –

0

我有一個與Chrome瀏覽器類似的問題,cookies總是不正確或空的。

然後,我從Heroku(它使用彈出窗口作爲登錄,而不是js重定向)下載了一個facebook示例,並且注意到當網站的基本URL不是服務器根URL (例如:localhost/somedirectory/)。 但創建虛擬主機後,它看起來像它的作品。

你可以看到一個索引的例子。從這裏應用https://gist.github.com/2845986