2012-02-12 82 views
0

我有一個開發站點和生產站點在共享服務器上運行。我用fb_loginUrl和下面的代碼工作。

我正在將生產站點移動到新的域,也在共享服務器上。我複製了包括PHP SDK在內的整個代碼。我已經使用了新域名的appID和密碼。在新域中,如果需要,fb_loginUrl顯示登錄對話框,正確調用FB並接收GET回調。但即使有用戶登錄到機器上,用戶始終爲0。沒有CSRF錯誤。如果我繼續繞着無限循環,它會在第二次拋出一個CSRF錯誤,並在此之後每秒拋出一次。

問題應該在新應用程序設置的某個地方,但它們與名稱和地址更新的舊的應用程序相同,並且我嘗試了可以​​考慮的更改,包括在返回網址。我開始懷疑FB是否將一些不可見的默認值應用於新註冊的應用程序(並非完全偏執 - Web儀表板上的默認設置不同,例如「deprecate offline_access」的值 - 但我已將所有內容與我的舊設置)。

爲什麼它可能在不同的域中以不同的方式運行?

require_once '../facebook/facebook.php'; 
if(!isset($facebook)) $facebook = new Facebook(array(
    'appId' => $facebook_appid, 
    'secret' => $fb_secret, 
    'scope' => 'email' 
)); 

$fb_user = $facebook->getUser(); 
echo ' USER: ' . $fb_user; 

if ($fb_user) { 
    try { 
    $fb_user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    } 
} 
+0

在您移動網站之後您是否可以使用與之前網址相同的網址訪問新網站? – alexl 2012-02-12 02:46:40

+0

沒有,不同的網址和不同的FB應用程序ID。你給了我一個主意。我嘗試在新的域名上使用舊的FB應用程序,它的工作原理!所以這給了我一個解決方法。但我仍然不知道爲什麼會發生這種情況,因爲舊應用程序現在具有與新應用程序完全相同的設置。 – malcanso 2012-02-12 05:49:12

+0

在每個瀏覽器中都有這個問題嗎? – yacon 2013-01-28 14:38:55

回答

0

我覺得剛纔的getUser就會從cookie數據,所以儘量增加

'餅乾'=>真實, 到新的Facebook用語,如

new Facebook(array(
    'appId' => $facebook_appid, 
    'secret' => $fb_secret, 
    'scope' => 'email', 
    'cookie' => true, 

如果你直接轉到IFRAME測試的Facebook鉻之外的應用程序,確保URL匹配給你放什麼在畫布URL在應用程序設置,例如如果前面有www的話。

+0

或者可能 http://developers.facebook.com/bugs/223499947703278 – alexl 2012-02-12 08:10:20

+0

那麼,代碼正在工作,與不同的FB appID。所以問題出現在特定應用程序的某處。 Facebook肯定會在cookie中存儲一堆信息,但是當我幾天前嘗試添加該行時,它並沒有什麼不同,我想我聽說現在的SDK並不需要它。 – malcanso 2012-02-13 00:38:37