2011-10-06 104 views
1

我已登錄Facebook在我的網站上。我正在使用JS-SDK,加上PHP-SDK。Facebook登錄按鈕不會觸發頁面刷新,FB.Event.subscribe似乎沒有註冊

我99.9%確定我在正確的地方擁有所有正確的文件,因爲實際的登錄工作。然而,一旦用戶登錄後,我無法讓頁面重新啓動。

這是Facebook登錄按鈕代碼('Scope'是新的'燙髮',因爲我今天才發現):

<fb:login-button scope="email,user_birthday">Sign In</fb:login-button> 

一旦用戶授權等,關閉對話框,但然後什麼也沒有發生。用戶尚未登錄,頁面不會重新加載。

當我手動重新加載,用戶登錄

這是代碼我在我的頁腳應該監聽登錄:

<script> 
    FB.Event.subscribe('auth.login', function(response) { 
     window.location.reload(); 
    }); 
</script> 

在我的Chrome開發者工具JS控制檯,我收到一個錯誤,說「未捕獲的引用:FB未定義」。即使在單擊Facebook登錄按鈕之前,頁面加載時也會出現此錯誤。

任何想法,我可能做錯了什麼?謝謝!

回答

0

我發現將應用程序祕密傳遞給auth.login調用會導致事件正確觸發。您可以通過從PHP應用祕密的JavaScript函數,就像這樣:

<script> 
    FB.Event.subscribe('auth.login', function(response) { 
     window.location.reload(); 
    }, secret: '<?php print $facebook->getApiSecret(); ?>'); 
</script> 

這已被修復被Facebook。

+0

謝謝,我會試試這個,讓你知道! 雖然可能存在問題:不會透過我的源代碼查看任何人的密碼嗎? – Erik

+0

無論如何,這對我來說並不起作用,我檢查了我的來源,這個祕密對每個人都是清楚可見的。我不喜歡那樣。 – Erik

+0

它會,但我相信祕密是綁定到您在應用程序設置中指定的域。我不知道爲什麼Facebook會以其他方式暴露函數getApiSecret();在PHP SDK中。 –