2011-03-04 91 views
21

標題真的說明了一切。在一些(未確定的)條件下,FB.getLoginStatus()停止工作,不會調用我給它的回調函數。我發現的唯一有趣的線索FB.getLoginStatus不調用其回調

  • FB.Auth._loadState是停留在「加載」 - 無論是應該讓它點擊到「裝」是不會發生
  • 像輕微的延遲打在alert()電話往往使它開始工作

任何提示甚至如何調查這種歡迎。

+1

它發生在用戶移除您的應用程序後可靠 – Martin 2011-05-10 08:53:37

+0

我也遇到過這種情況。你有臉書Facebook錯誤消息的Facebook登錄彈出窗口,或者彈出窗口沒有發生?對我來說,彈出窗口已停止工作(並沒有被阻止 - 只是沒有被調用,JavaScript中也沒有回調)。 – potench 2012-07-06 18:02:55

回答

5

也許你正在使用異步調用。當我用window.fbAsyncInit調用FB.init時發生了同樣的事情。我所做的只是一個setTimeout函數延遲FB.getLoginStatus

window.setTimeout(checkLogStatus, 1000); 


    function checkLogStatus(){ 
      alert("check"); 
      // fetch the status on load  
      FB.getLoginStatus(handleSessionResponse); 
    } 

看來以後

+0

工作真棒!拍攝兄弟! – 2012-02-27 20:35:07

+0

這對我有用! TQ! – 2018-01-03 06:34:05

27

這通常當我從下了什麼註冊不同的域名運行頁面恰好適合我的工作在Facebook。通常這是我在本地開發的時候。

如果您在本地運行,則必須設置本地Web服務器,然後修改您的主機文件以將註冊域指向127.0.0.1,以便在本地計算機上進行測試。當你想在服務器上測試時,不要忘記從主機文件中刪除該行。

+4

是的是的!最後。幾年前,我創建了一個Facebook應用程序,但沒有考慮更改URL。對FB沒有提供有用的錯誤信息感到羞恥。 – JnBrymn 2011-09-15 18:14:21

12

我的FB API有類似的問題。事實證明,我的Facebook應用程序配置錯誤。請確保這不是你的情況。我的問題是我在FB應用程序中的「Site URL」param指向https,但我使用http協議進行開發。在FB.init之後的任何針對FB api的調用都沒有調用我的回調函數。因此,首先要做的事情是仔細檢查App配置。

現在,如果某些原因您依賴於FB api,但是您希望有一個備用選項以防止它失效 - 您可以使用計時器解決問題。只需設置一個計時器並禁用它,如果FB Api給你適當的響應。如果不是 - 回退到一些自定義函數,它將執行一些額外的邏輯。

function callFbApi() { 
    var timeoutHandler = setTimeout(function() { requestFailed(); }, 1000); 

    function requestFailed() { 
     // When this happens, it means that FB API was unresponsive 
     doSomeFallbackWork(); 
     alert('hey, FB API does not work!'); 
    } 

    FB.getLoginStatus(function(response) { 
     clearTimeout(timeoutHandler); // This will clear the timeout in case of proper FB call 
     doSomeUsualWorkAfterFbReplies(); 

     return false; 
    }, true); 
} 
1

在開發應用程序的新版本,你必須確保已經把你正在使用下的

選擇來訪問網站領域的應用如何正確的網址您應用程序集成了Facebook

部分。

5

如果您的應用程序處於沙箱模式,那麼Facebook的行爲就好像您的應用程序對於未列爲應用程序開發人員的任何人都是不可見的。如果你沒有登錄,那麼你的應用程序現在是不可見的。

只有在使用可見應用程序進行初始化時,回調纔會觸發。否則下面的響應返回:

<span>Application Error: There was a problem getting data for the application you requested. The application may not be valid, or there may be a temporary glitch. Please try again later. </span> 

欲瞭解更多信息,請參閱我的這個bug票評論: https://developers.facebook.com/bugs/240058389381072

0

正如其他人發佈的,你必須在這個Facebook的預計相同的URL來訪問你的網站。例如,如果Facebook有回調「example.com」,但瀏覽器有「www.example.com」,則可能導致此問題。

此外,如果您的瀏覽器不允許使用第三方cookie,您也可能會看到此問題。或者你可以看到回調erroneously reporting the user is not connected

0

只是發佈我曾打電話給FB.getLoginStatus的情況完全沒有答覆。

我的應用程序被設計成在標籤上運行,而我只進入了應用程序管理頁面上頁面標籤的網址,而不是應用在Facebook上(即Canvas)的網址。該選項卡完美加載,但對FB JS SDK的任何調用都不會引發任何響應。

1

確保協議是HTTPS而不是HTTP。

1

我有類似的問題。當我打開瀏覽器時,該網站每次都工作,但是當我嘗試重新加載時失敗。

原因是Facebook配置上的網站名稱上缺少「www」。請注意,放置「www」(如www.yoursite.com)適用於兩種情況(yoursite.com或www.yoursite.com)。

-1

在Facebook的應用程序設置,去客戶端的OAuth設置,看有效的OAuth重定向的URI

確保您列出哪些是從被調用的Facebook SDK域的URI。例如:

enter image description here

我開發位於localhost:5000並部署到Heroku的。注意格式:http://domain.name/

+0

沒有任何客戶端OAuth設置 – Green 2016-06-30 12:58:31